Nginx+tornado和Nodejs对比,性能差距如何?

单个的python的web框架tornado肯定是不如nodejs的性能与并发强;但是如果是nginx负载均衡,多开几个tornado进程呢?这种情况下,会比nodejs的性能差多少?

喜欢这个问题 | 分享 | 新建回答

回答

jerkzhang

Mar 3, 2023
1 赞

可以自己用Apache Bench工具去做AB压力测试。影响因素较多,但可把硬件环境给一致化再做同等条件下的压力测试。如果我记得没错的话,nodejs的qps应该可以达到前者的若干倍吧;但是pypy下,也可能持平了;具体有待进一步亲自测试。

但实际上这样的测试其实意义没那么大,除非你就是很单纯的网络连接;而“性能”不仅仅是网络连接方面的并发能力;还有解析能力以及别的场景需求下的别的方面。与其去比较请求hello world,不如去比较两者的异步请求的能力。

不过对性能比较敏感,推荐直接选择nodejs吧,web服务器追求性能,主要就两个主流选择:

1、Nodejs
2、Golang

至于Nginx+Tornado或者Flask等多开进程的方式,这个会有翻若干倍的效果,且把CPU用满。但是,如果我没记错的话,即使这样,依然还是不够的。



回头有机会再来做个测试后,把数据记录下来后,再来补充回答你这个问题吧。(我猜测pypy + tornado 是可以 达到 和 nodejs 一个等级的性能级别的,甚至超越;不过python中很多异步连接数据库要自己写,但也不难;不过这些对比下来,最后实际业务中,大概率不是web服务器的性能不够,瓶颈问题大概率会在数据库层面)



更新:实际测试了,见这里;有很多以前想的都被推翻了,nginx+tornado在实际业务中是必要的,但是对性能并不能起到明显作用,反而因为套了一层而减速。不过还是得看具体业务场景,这种空的测试没太大意义。



喷火的尾巴

Mar 1, 2023
0 赞

与其对比nginx+tornado和nodejs,不如对比pypy + tornado在性能上能否匹敌nodejs,我重新开了一个提问。