3

在运行 django/tastypie 的 Apache 中,随着时间的推移,我的内存逐渐增加。流量确实增加了,但我预计随着时间的推移内存会逐渐减少。

<IfModule mpm_worker_module>
StartServers           6
MinSpareThreads       12
MaxSpareThreads       24
ThreadLimit           48
ThreadsPerChild       24
MaxClients            24
MaxRequestsPerChild    0
MaxMemFree          1024
</IfModule>

守护进程:

WSGIDaemonProcess www.domain.com processes=24 threads=24

来自New Relic的报告

在此处输入图像描述

在此处输入图像描述

我的想法有问题吗?如果内存最终稳定并呈线性增长,我真的不在乎内存是否会随着时间的推移而释放,只要它永远不会超过某个阈值。我有两台负载平衡的机器,它们都是相同的设置和做同样的事情。

否则一切都运行得很好,而且速度非常快。

谢谢,马克

4

2 回答 2

0

一天的运行时请求数量很少,因此很难判断您是否在泄漏内存。对我来说,你的图表看起来很合理,但有很多变量,所以很难确定。

如果您担心泄漏,您可以尝试使用maximum-requestsWSGIDaemonProcess 选项在处理了这么多请求后重新启动进程。

另外,你真的需要 24 个 WSGI 进程吗?每个都有自己的 python 解释器,因此随着时间的推移将消耗 24 * (1 python/django/tastypie 堆栈)。我建议进行负载测试并相应地减少进程数量。另请查看Graham Dumpleton 的这篇文章

于 2013-08-09T14:07:13.303 回答
0

您的 Apache MPM 和 mod_wsgi 守护程序配置在一起非常糟糕。我现在无法提供详细的答案,因为我正在度假和出门在外,但是去观看我的 PyCon 演讲,稍后我会尝试跟进,一旦我看到你已经观看并尝试自己修复你的配置并在此处发布跟进.


更新 1

顺便说一句,如果您查看 New Relic 下由 New Relic Python 代理监控的实际 Web 应用程序的容量分析报告,您应该看到由于您正在使用的进程/线程数量过多,您的容量利用不足对于 mod_wsgi 的守护进程模式。有关容量分析报告的详细信息,请参见:

于 2013-08-09T15:36:46.420 回答