gunicorn supervisor nginx 配置问题,该给gunicorn几个worker,有没有必要上gevent

发布于 2022-09-03 08:56:55 字数 288 浏览 11 评论 0

配置了一下午环境,跑起来是跑起来了,但是寻摸着一次琢磨透他们嘛。

鉴于gunicorn,supervisor用的不多,网络上找到资料很少(中文)

英文的也有些不太好懂。

想问下gunicorn可以设置worker设置几个比较合适呢。阿里云服务器,双核的。

supervisor是不是也有设置类似worker的地方,配置一下午迷糊了。

nginx呢。
晕乎乎的。

另外gevent不太了解,这个有必要上吗。我看配置起来蛮简单的。有什么优缺点呢。

谢谢各位。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

涫野音 2022-09-10 08:56:55

gunicorn 是常用的 WSGI 服务器,在目前应用中,和 uWSGI 都是比较常用的选择,而两者性能都相差不远。gunicorn 配置的 worker 数量官网的示例值是 2 * cpu数 + 1官网示例

import multiprocessing

bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1

所以,以题主的双核服务器来说,应该设为5 个合适。


supervisor 是一个进程管理工具,可以用于管理N多的进程,不仅仅是 Gunicorn ,我甚至用来管理 Redis。确实,supervisor 中也存在类似worker数量的东西,叫procs,其实是进程数量,也就是说你配置了几个,supervisor就会帮你启动几个进程。

需要注意的是,supervisorGunicorn 的 worker 是独立的,假设两个你都设置为 5 的话,那事实上会有 5 * 5 = 25 个进程提供服务的。


nginx 的话一般用于反向代理和负载均衡,假设你有两个web应用运行在服务器本地:

然后你想通过域名来分别访问这两个应用,例如

那么这就可以通过 nginx 来配置。


gevent 是协程的一个库,一般用于 IO密集型 应用,不建议使用。如果是IO密集型 应用,建议使用 Tornado 框架进行编写。

差不多就这么多了,建议多看官方文档。

伪心 2022-09-10 08:56:55

无论是worker还是NginxProcess,都是根据你的服务器的CPU核数决定的,你的阿里云只有双核(2个核)?

gunicorn不是很了解,uWSGI也有个worker,一般设置成核数X2

Nginx据说8个进程就可以了。

网上搜一下Nginx优化,应该挺多教程的。

酒废 2022-09-10 08:56:55

关于worker这个基本上是建议等于实际CPU核心数的一到两倍,我一般是有几个核,就用几个worker

至于supervisor我好像并没有看到有关worker的设定。

实际上我是用的uwsgi + supervisor + nginx的组合。具体你可以google下,我也只是照着官方wiki来做,没用到啥高大上的东西。

PS:放弃中文资料吧,大都年久失修,英文虽然不好啃,但至少啃不到坑里

少女净妖师 2022-09-10 08:56:55
  1. Gunicorn worker的数量从经验的角度一般配置 2 * core + 1, core指的核心数。

  2. supervisor没有配worker数这个概念,但是有配置进程数, numprocs 这个字段

  3. 如果用的gunicorn,一般建议将 worker_class 配置成 gevent, 这个你懂得.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文