Tornado HTTPServer

Tornado 官方文档和源代码中的几个例子都是运行在单进程模式的, 但是一样可以很简单地运行在多进程模式下。

参看:Tornado: 2. 源码分析 (2)

文章中虽然分析的是 0.2 版本的代码, 但是直到现在最新的 1.2.1 版本中,这些内容也基本没变。

httpserver.py:

If num_processes is None or <= 0, we detect the number of cores available on this machine and fork that number of child processes. If num_processes is given and > 1, we fork that specific number of sub-processes.

没有测试过多进程模式下的性能和稳定性。

Tornado 官方文档: Tornado Web Server Document 官方文档的中文翻译: python_Tornado文档翻译

官方文档中并没有提到使用多进程模式运行 Tornado 实例, 而是提出:

We ran 4 single-threaded Tornado frontends behind an nginx reverse proxy, which is how we recommend running Tornado in production (our load test machine had four cores, and we recommend 1 frontend per core).

整篇文档完全没有提及 pre-forking .

估计是因为: (httpserver.py)

Since we use processes and not threads, there is no shared memory between any server code.

所以在官方文档中提及的使用 "1 frontend per core" 的部署方式, 在性能和资源消耗上应该是和 pre-forking 没什么差别的?

而分别在 nginx 后部署多个 Tornado 单进程实例也还是有些好处的, 比如可以自己控制单进程实例的数量。

Comments

Comment is disabled by administrator.