gunicorn supervisor nginx 配置问题,该给gunicorn几个worker,有没有必要上gevent
配置了一下午环境,跑起来是跑起来了,但是寻摸着一次琢磨透他们嘛。
鉴于gunicorn,supervisor用的不多,网络上找到资料很少(中文)
英文的也有些不太好懂。
想问下gunicorn可以设置worker设置几个比较合适呢。阿里云服务器,双核的。
supervisor是不是也有设置类似worker的地方,配置一下午迷糊了。
nginx呢。
晕乎乎的。
另外gevent不太了解,这个有必要上吗。我看配置起来蛮简单的。有什么优缺点呢。
谢谢各位。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
gunicorn
是常用的 WSGI 服务器,在目前应用中,和uWSGI
都是比较常用的选择,而两者性能都相差不远。gunicorn
配置的 worker 数量官网的示例值是2 * cpu数 + 1
,官网示例所以,以题主的双核服务器来说,应该设为
5
个合适。而
supervisor
是一个进程管理工具,可以用于管理N多的进程,不仅仅是Gunicorn
,我甚至用来管理Redis
。确实,supervisor
中也存在类似worker
数量的东西,叫procs
,其实是进程数量,也就是说你配置了几个,supervisor
就会帮你启动几个进程。需要注意的是,
supervisor
和Gunicorn
的 worker 是独立的,假设两个你都设置为 5 的话,那事实上会有 5 * 5 = 25 个进程提供服务的。nginx
的话一般用于反向代理和负载均衡,假设你有两个web应用运行在服务器本地:http://127.0.0.1:5000 博客
http://127.0.0.1:8080 论坛
然后你想通过域名来分别访问这两个应用,例如
http://baidu.com/blog 博客
http://baidu.com/bss 论坛
那么这就可以通过 nginx 来配置。
gevent
是协程的一个库,一般用于IO密集型
应用,不建议使用。如果是IO密集型
应用,建议使用Tornado
框架进行编写。差不多就这么多了,建议多看官方文档。
无论是
worker
还是Nginx
的Process
,都是根据你的服务器的CPU
核数决定的,你的阿里云只有双核(2个核
)?gunicorn
不是很了解,uWSGI
也有个worker
,一般设置成核数X2
。Nginx
据说8
个进程就可以了。网上搜一下
Nginx
优化,应该挺多教程的。关于
worker
这个基本上是建议等于实际CPU
核心数的一到两倍,我一般是有几个核,就用几个worker
。至于
supervisor
我好像并没有看到有关worker
的设定。实际上我是用的
uwsgi
+supervisor
+nginx
的组合。具体你可以google
下,我也只是照着官方wiki
来做,没用到啥高大上的东西。PS:放弃中文资料吧,大都年久失修,英文虽然不好啃,但至少啃不到坑里
Gunicorn worker的数量从经验的角度一般配置
2 * core + 1
, core指的核心数。supervisor没有配worker数这个概念,但是有配置进程数,
numprocs
这个字段如果用的gunicorn,一般建议将
worker_class
配置成gevent
, 这个你懂得.