На сервере с 30 ГБ памяти, обслуживающем довольно объемный трафик.
По какой-то причине в последнее время Apache2 начал запускать потоки с безумным использованием памяти. 500–750 МБ на поток сейчас не редкость.
php.ini имеет memory_limit = 128M
(по умолчанию php7.0).
Конфигурация предварительной вилки Apache по умолчанию.
В результате у нас всего ~ 1 ГБ свободной памяти.
Что мне не хватает?
У нас есть запросы проксирования Nginx, и его процессы больше похожи на ~ 60 МБ на поток. Вот скриншот бега top
Любое понимание того, что может быть движущей силой, приветствуется!
Исходя из этого верхнего вывода, похоже, что процессы Apache имеют 20-50 МБ «резидентной» памяти. "Вирт" это не память, о которой тебе нужно беспокоитьсякак правило, это могут быть сопоставленные файлы и не используется фактическая оперативная память.
Я вижу, что у вас "кэшировано" 28 ГБ памяти. Обычно это кешированные файлы. Это хорошо, это избавляет ОС от необходимости обращаться к диску для доступа к файлам.
Я думаю, вам может пригодиться "Linux съел мою оперативную память" интернет сайт.
В чем именно заключается проблема? Ваша система каждый раз сообщает о «нехватке памяти» или процессы не работают из-за нехватки оперативной памяти?