![mod_php 使用的私有脏 RSS 是否会被提供给其他进程?](https://linux22.com/image/548633/mod_php%20%E4%BD%BF%E7%94%A8%E7%9A%84%E7%A7%81%E6%9C%89%E8%84%8F%20RSS%20%E6%98%AF%E5%90%A6%E4%BC%9A%E8%A2%AB%E6%8F%90%E4%BE%9B%E7%BB%99%E5%85%B6%E4%BB%96%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我正在运行 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 设置,以便经常回收子进程。