Назад | Перейти на главную страницу

Будет ли частный грязный RSS, используемый mod_php, когда-либо доступен для других процессов?

У меня запущены процессы 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, чтобы дочерние элементы часто использовались повторно.