【问题标题】:Running multiple django sites with mod_wsgi + apache causes memory issues使用 mod_wsgi + apache 运行多个 django 站点会导致内存问题
【发布时间】:2015-02-28 10:59:04
【问题描述】:

我目前正在使用 mod wsgi 运行 50 多个 Django 安装,并注意到 apache 并没有丢弃内存(所以它只是保持越来越多的内存,然后随着交换磁盘的填满,站点会停止运行)。我还在这些服务器上托管了一些 PHP 站点。

当前的 wsgi 配置如下所示:

WSGIScriptAlias / /var/www/vhosts/glenlivet/tar/src/core/wsgi.py
WSGIDaemonProcess tar.sljol.info python-path=/var/www/vhosts/glenlivet/tar/src:/var/www/vhosts/.virtualenvs/glenlivet/lib/python2.7/site-packages
<Location />
WSGIProcessGroup tar.sljol.info
</Location>

我不是这种配置的专家,谁能建议如何最好地设置每个虚拟主机?

谢谢

【问题讨论】:

  • 确保您一开始没有使用 Apache 2.2 和旧的 mod_wsgi 版本。 Apache 2.2 存在内存增长问题,该问题已在 Apache 2.4 中修复。与 Linux 发行版提供的旧版本相比,较新的 mod_wsgi 版本还提供了解决 Apache 2.2 问题的解决方法,以及减少 Apache 使用的内存的其他改进。
  • 感谢 Graham,我正在运行:服务器版本:Apache/2.4.7 (Ubuntu) 服务器构建:2014 年 7 月 22 日 14:36:38 和来源:mod-wsgi 版本:3.4-4ubuntu2。 1.14.04.2
  • 如果您使用慢速 HTTP 客户端处理大文件上传或下载,由于仍在使用 mod_wsgi 3.4,您仍然会看到内存使用量过多。
  • 不是特别大,没有。我已经设法阻止这些站点保留过多的内存。我想我将考虑使用 Django 技术将这些站点聚集在一起。如果我想拥有多个 Vhost,但让它们使用相同的进程池,这可能吗?
  • 如果您正在谈论使用 Django 站点框架,这在某些情况下会有所帮助。 docs.djangoproject.com/en/1.7/ref/contrib/sites

标签: python django apache mod-wsgi


【解决方案1】:

有一个 maximum-requests 选项可以添加到 WSGIDaemonProcess 指令中,它可以帮助清理 apache 为您的 Django 应用程序保留的内存。

这里是关于这个maximum-requests 选项的快速文档...

应该考虑的另一个选项是,它规定了在关闭和重新启动守护进程之前应该允许守护进程接受的最大请求数。这应该用于由于应用程序本身或第三方扩展模块的问题而导致内存使用量增加的问题。 Documentation

您将承担 apache 必须重新加载 Django 应用程序的开销,但可能比由于 apache 不释放内存而进行交换更有益。

您可能需要进行一些基准测试,以了解您的麻烦应用程序的最大请求数应该是多少,但一个好的起点可能是下面的代码...

WSGIDaemonProcess tar.sljol.info python-path=/var/www/vhosts/glenlivet/tar/src:/var/www/vhosts/.virtualenvs/glenlivet/lib/python2.7/site-packages maximum-requests=10000

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 2012-08-21
    • 2014-07-25
    • 2011-05-24
    • 2010-09-23
    • 2020-10-11
    • 2021-01-15
    • 2013-09-22
    相关资源
    最近更新 更多