为啥一个python系统用tornado跑100个进程比用gunicorn跑30个worker还要慢
一个用flask框架做的系统,刚开用tornado跑40个进程,感觉很慢,后来换成100个,但不到100人同时访问就感觉慢了,后来试了试gunicorn,感觉跑30个worker就已经很快了
为啥呢?小白求指导
服务器是16核的,用nginx做静态文件服务器和代理
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
好文学习了
出处:
http://www.oschina.net/translate/optimising-nginx-node-js-and-networking-for-heavy-workloads
进程数不是越多越好的,过多的进程或者线程的上下文切换会耗近CPU,性能反而变差。
Tornado没用过,这里拿常见的Nginx来分析下,如果运行在一台4核服务器上,假设这台服务器专门用来做Web服务器,主要运行
Nginx
服务,这时建议
开3个Nginx worker进程,把这3个worker进程绑定到后面3个CPU核心(其他系统任务会优先使用第一个核心0001):
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
注:Nginx的worker进程是一个单线程的进程。Nginx除了worker进程,还有master进程和一些管理cache的进程(如果使用了nginx的cache功能)。
出处:
http://www.oschina.net/translate/optimising-nginx-node-js-and-networking-for-heavy-workloads
进程数不是越多越好的,过多的进程或者线程的上下文切换会耗近CPU,性能反而变差。
Tornado没用过,这里拿常见的Nginx来分析下,如果运行在一台4核服务器上,假设这台服务器专门用来做Web服务器,主要运行
Nginx
服务,这时建议
开3个Nginx worker进程,把这3个worker进程绑定到后面3个CPU核心(其他系统任务会优先使用第一个核心0001):
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
注:Nginx的worker进程是一个单线程的进程。Nginx除了worker进程,还有master进程和一些管理cache的进程(如果使用了nginx的cache功能)。
进程开了不回收就越来越慢了,worker就是个进程池,相关概念google,搞清楚概念。
感觉没基础知识的人做开发就跟外行拿笔画画一样,乱画一气。
慢是多少,快是多少? 自己好好测试一下把,感觉不靠谱。
进程开了不回收就越来越慢了,worker就是个进程池,相关概念google,搞清楚概念。
感觉没基础知识的人做开发就跟外行拿笔画画一样,乱画一气。
出处:
http://www.oschina.net/translate/optimising-nginx-node-js-and-networking-for-heavy-workloads
进程数不是越多越好的,过多的进程或者线程的上下文切换会耗近CPU,性能反而变差。
Tornado没用过,这里拿常见的Nginx来分析下,如果运行在一台4核服务器上,假设这台服务器专门用来做Web服务器,主要运行
Nginx
服务,这时建议
开3个Nginx worker进程,把这3个worker进程绑定到后面3个CPU核心(其他系统任务会优先使用第一个核心0001):
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
注:Nginx的worker进程是一个单线程的进程。Nginx除了worker进程,还有master进程和一些管理cache的进程(如果使用了nginx的cache功能)。