我正在运行 PHP 进程,偶尔会短暂使用大量 RAM。
当 PHP 使用大量 RAM 后,httpd 进程似乎会无限期地保留相同的私有脏 RSS。即使在处理稍后占用内存较少的请求时也是如此。以下是 pmap 中的相关行。
% tinysu pmap -x 30247
30247: /usr/sbin/httpd
Address Kbytes RSS Dirty Mode Mapping
00002b914046f000 60712 57324 57124 rw--- [ anon ]
00002b9144cfa000 12676 12448 12448 rw--- [ anon ]
00002b9145a3b000 27400 26964 26964 rw--- [ anon ]
该内存是否可以供系统其余部分使用?
对于诸如持久性 memcached 连接之类的操作,我将 httpd.conf 中的 MaxRequestPerChild 设置为 10000。我是否需要降低该值以确保释放内存,以便偶尔的内存密集型操作最终不会导致每个 httpd 进程占用远远超过其所需的内存?
我尝试在 httpd.conf 中使用 MaxMemFree,但没有任何区别。
答案1
据我所知,不会。它永远不会像那样释放内存。您需要更改 Apache 设置,以便经常回收子进程。