【问题标题】:How to effectively run Django with multi CPU cores如何有效地运行具有多 CPU 内核的 D​​jango
【发布时间】:2025-12-11 14:40:01
【问题描述】:

我正在开发一个 Web 应用程序,但是当我增加 CPU 内核的数量时,我遇到了一个问题,即 Django 的性能没有提高。
(实际上1核性能最高,2、4、8核性能差别不大)
我的应用程序所做的只是从数据库中加载静态文件(HTML、CSS、JS)和一些数据。 我使用 Apache 作为 Web 服务器和 mod_wsgi。

这是 Django 的正常行为吗?
如果是这样,我该如何提高多核性能?
(我想增加内核数量,因为 CPU 使用率达到 90% 左右,只有 1 个内核)

▼ab -n 200 -c 200 1CPU核心和1GB内存

▼ab -n 200 -c 200 用于 2CPU 内核和 1GB 内存

▼vmstat 1 用于 1CPU 内核和 1GB 内存

▼vmstat 1 用于 2CPU 内核和 1GB 内存

【问题讨论】:

  • Django 建立在 Python 之上,而 CPython 存在导致此问题的 GIL 问题。记住下面的 Django 是一个 web 框架,你最大的敌人是 IO 而不是 CPUIO 可以通过使用智能技术 AKA 缓存、优化查询和 Session 内存数据库来修复
  • 不,阿卜杜勒错了。这与 Django 或 Python 无关,但取决于您如何配置 Apache
  • 丹尼尔,你是对的。我将 WSGIDaemonProcess localhost 更改为 WSGIDaemonProcess localhost processes=2 threads=25,然后性能变得更好了。

标签: django apache performance mod-wsgi multicore


【解决方案1】:

我发现我只需要对 Apache 配置文件进行一些更改。 我变了

WSGIDaemonProcess localhost

WSGIDaemonProcess localhost processes=2 threads=25

然后响应时间从 7 秒减少到 2 秒。
之后,我尝试了其他数量的 CPU 内核,当我设置与 CPU 内核数量相同的进程数时,性能变得更好。

【讨论】:

  • 这对我帮助最大!谢谢!
  • 这为我节省了很多时间 - 谢谢!
最近更新 更多