用 tornado 的同学 你们用 Nginx 吗

2014-11-18 17:14:20 +08:00
 mulog
一直都是单进程裸跑tornado 前两天心血来潮测试了一下Nginx后面跑四个tornado
跑hello world的话,Nginx 的 request per second 倒是可以达到单tornado的两倍多
但是如果带上了后面的db查询 成绩基本就差不多啦 甚至还稍稍慢点

想问问在生产环境到底要不要在tornado前面加上Nginx呢?
如果加的话有哪些配置需要注意以提高性能?
或者说有其他性能之外的好处?
5148 次点击
所在节点    Python
10 条回复
shiny
2014-11-18 17:17:32 +08:00

维护起来方便
充分利用多核 CPU
zeeler
2014-11-18 17:28:30 +08:00
必须加呀,tornado跑一个实例很浪费的;另外,db查询速度和带不带nginx没啥关系,请优化db本身,比如读写分离、增加cache层、分布式等等
kslr
2014-11-18 17:39:24 +08:00
一般都是多少颗CPU,就起多少实例,前面用nginx负载均衡。
zeeler
2014-11-18 18:25:39 +08:00
看下官方文档,非常建议用nginx http://unicorn.bogomips.org/PHILOSOPHY.html
By acting as a buffer to shield unicorn from slow I/O, a reverse proxy will inevitably incur overhead in the form of extra data copies.
.....
nginx is the only (Free) solution we know of that meets the above requirements.
skybr
2014-11-18 18:33:16 +08:00
db查询也得找异步库, tornado那个分离出去的mysql db库是block的, 而且如果要测得相对准一点, db和应用最好别放在同一个节点上.
mulog
2014-11-18 18:40:28 +08:00
@skybr
我的应用里数据库查询是一个分离出去的服务 服务调用也是异步的 所以应该没问题
不过我也觉得是该把db放另一台机器上测试 因为我们生产环境也是这样 谢谢建议~
msg7086
2014-11-18 19:06:39 +08:00
Nginx解决的是慢连接问题,不是性能问题。组件变多,性能基本是会降低,所以只有在实际要解决问题的情况下才有意义增加组件。
wwqgtxx
2014-11-18 21:48:14 +08:00
v2ex就是t+n的
lianghui
2014-11-19 12:54:43 +08:00
多台机器跑可以用nginx,如果一台机器直接用tornado多进程监听同一端口就行了。
freestyle
2017-02-16 21:42:24 +08:00
@skybr 请教一下适合 tornado 的异步 db 库是哪个,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/147509

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX