【问题标题】:OSQA apache memory footprintOSQA apache 内存占用
【发布时间】:2011-05-03 02:13:54
【问题描述】:

我有一个 OSQA(python / django q&a 应用程序)安装服务于 8 个不同的站点。这些网站都在开发中,接收的流量很少。该服务器是具有 512 mb 内存的虚拟专用服务器。

Apache 仅在 Nginx 后面使用 mod_wsgi 提供动态页面。在服务器阻塞之前,我无法阻止 Apache 在每个请求中消耗越来越多的内存。

我尝试了配置参数,但运气不佳,以尽量减少内存占用。在 apache2.conf 中使用以下 mpm_prefork 参数:

StartServers          2
MinSpareServers       1
MaxSpareServers       4
MaxClients            4
MaxRequestsPerChild 100

2 个 apache 进程开始使用 4 mb,在第一个请求之后有 4 个进程,每个进程接近 50 mb,并且随着每个新请求,这 4 个进程稳步攀升至每个接近 200 mb。

我觉得有什么不对劲。非常感谢任何建议。

【问题讨论】:

    标签: apache memory-leaks server-configuration osqa


    【解决方案1】:
    KeepAlive Off
    MaxSpareThreads 3
    MinSpareThreads 1
    ServerLimit 3
    SetEnvIf X-Forwarded-SSL on HTTPS=1
    ThreadsPerChild 2
    
    WSGIDaemonProcess osqaWSGI processes=2 python-path=/web/osqa_server:/web/osqa_server/lib/python2.6 threads=1 maximum-requests=550
    WSGIProcessGroup osqaWSGI
    

    用 10,000 次并发命中运行 httperf,它仍然存在。

    【讨论】:

    • 您的意思是 MinSpareServers 而不是 MinSpareThreads?因为 MinSpareThreads 无法识别。
    • 取决于您使用的是 prefork 还是 worker。 MinSpareServers 表示您正在使用 prefork。见camelrichard.org/apache-prefork-vs-worker
    • 谢谢,现在看起来好多了。但我有点困惑。添加 WSGIDaemonProcess 部分后,现在从一开始就有 4 个进程。 processes=2 是否与处理器数量有关? 4 处理器机器的最佳选择是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2010-09-18
    • 2013-01-22
    相关资源
    最近更新 更多