uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?
Posted
技术标签:
【中文标题】uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?【英文标题】:uwsgi: What defines the number of workers/process that a django app needs?uwsgi:什么定义了 django 应用程序需要的工人/进程的数量? 【发布时间】:2012-10-02 06:29:23 【问题描述】:我有一个系统管理员和开发人员的问题。 我看到 uWSGI 允许我在运行 uWSGI 时设置数量或工作程序或进程,并且我读过它取决于安装的机器,所以我有下一个问题:
-
定义机器工人数量的规则是什么?
与nginx一起使用时,nginx.conf中的配置
worker_processes
会影响这个吗?
与 Celery 和 Redis 一起使用时,concurrency
是否与此相关?
此设置中的线程安全性如何? (我在我的应用中看到过 1 个请求执行 1 个任务的情况,结果是 2 次调用 celery 执行此任务。)
【问题讨论】:
您的最后一点与 uwsgi 设置无关。 (您可能想为此 [使用您的 celery 配置] 提出一个新问题) 你确定吗?你能回答为什么吗? 【参考方案1】:定义机器工人数量的规则是什么?
来自uWsgi docs:
设置进程数或线程数没有神奇的规则。它取决于应用程序和系统。不要认为使用像 2*cpucores 这样的简单数学就足够了。您需要尝试各种设置并不断监控您的应用程序。 uwsgitop 可能是找到最佳价值的绝佳工具。
与 nginx 一起使用时,nginx.conf 中的配置“worker_processes”会影响这个吗?
那个设置只和nginx有关,不直接影响uwsgi。但是,您可能需要修改此设置,因为您不希望有 20 个 nginx worker_processes
和只有一个 uwsgi 工作者。
当与 celery+redis 一起使用时,“并发”与此有关吗?
我通常使用 django 的 manage.py 启动 Celery 守护进程,因此它将在 uwsgi 之外运行。
此设置中的线程安全性如何?
我必须知道更多细节/细节才能发表评论。
【讨论】:
线程安全:我的意思是,在配置有 nginx 1 worker_process+uwsgi 2 workers+celery 4 进程的环境中的线程安全。我在我的应用程序中看到过 1 个请求执行 1 个任务,结果是 2 次调用 celery 执行此任务。以上是关于uwsgi:啥定义了 django 应用程序需要的工人/进程的数量?的主要内容,如果未能解决你的问题,请参考以下文章
uWSGI + Django + Nginx - 运行时错误