У меня запущены процессы PHP, которые иногда на короткое время используют большой объем оперативной памяти.
После того, как PHP использует большой объем оперативной памяти, процесс 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 ]
Будет ли эта память когда-либо доступна для использования остальной частью системы?
Я держу MaxRequestPerChild в httpd.conf на 10000 для таких вещей, как постоянные соединения memcached. Нужно ли мне понижать это значение, чтобы обеспечить высвобождение памяти, чтобы случайные операции с интенсивным использованием памяти в конечном итоге не заставили каждый процесс httpd занимать гораздо больше памяти, чем ему нужно?
Я пробовал использовать MaxMemFree в httpd.conf, но это не имело никакого значения.
AFAIK нет. Он никогда не освободит память таким образом. Вам нужно изменить настройку Apache, чтобы дочерние элементы часто использовались повторно.