使用nginx代理多个基于龙卷风的进程是否有意义,其中两者都是基于非阻塞的I / O?

时间:2015-07-27 12:22:52

标签: nginx proxy tornado nonblocking httpserver

我发现了一些在线文章,解释了如何使用nginx代理多个龙卷风进程(使用supervisord或其他东西),但无法理解他们将龙卷风用作后端服务器框架的原因。

根据我的理解,龙卷风和nginx都是基于非阻塞I / O的,所以如果你想要非阻塞I / O的好处,那么它们中的一个还不够吗?是否有理由为前端和后端选择基于非阻塞I / O的服务器?

1 个答案:

答案 0 :(得分:1)

是的,运行多个龙卷风流程并代理所有这些流程是有意义的。原因是GIL:每个python进程只能使用一个核心,因此要利用机器上的所有核心,必须运行多个进程。

有多种方法可以运行和管理多个Tornado进程,并非所有这些方法都需要像nginx这样的负载均衡器,但这是推荐的配置,因为它允许每个进程独立重启以实现零停机更新

非阻塞I / O的好处适用于每个级别。使用nginx作为负载均衡器确实会略微降低在后端使用Tornado所带来的好处,但仍然存在优势,特别是对于使用长轮询或websockets的站点。