我在运行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的报道
我的想法有缺陷吗?如果内存最终稳定并且变为线性,我真的不在乎内存是否随着时间的推移而释放,只要它永远不会超过某个阈值。我有两个负载均衡的机器,它们都是相同的设置和做同样的事情。
一切都运行良好,否则超快。
谢谢, 标记
答案 0 :(得分:0)
运行时间为一天的请求数量很少,很难判断您是否泄漏了内存。对我来说,你的图表看起来很合理,但是有很多变数,所以很难确定。
如果您担心泄漏,可以尝试使用maximum-requests
WSGIDaemonProcess选项在服务那么多请求后重新启动进程。
另外,您真的需要24个WSGI流程吗?每个人都有自己的python解释器,因此随着时间的推移将消耗24 *(1 python / django / tastypie堆栈)。我建议加载测试并相应地减少进程数量。另请查看Graham Dumpleton的this post。
答案 1 :(得分:0)
您的Apache MPM和mod_wsgi守护程序配置一起完全破碎。我现在无法在假期和外出旅行时提供详细的答案,但是去观看我的PyCon演讲,一旦我看到你看到它并尝试自己修改你的配置并在这里发布一个后续,我会尝试跟进
更新1
顺便说一句,如果您查看New Relic下针对您的实际Web应用程序的容量分析报告(由New Relic Python代理程序监控),您应该看到您的容量未充分利用是由于超过最多的进程/线程数您正在使用mod_wsgi的守护进程模式。有关容量分析报告的详细信息,请参阅: