Мне известен метод получения средней памяти, используемой каждым процессом apache2, с помощью ps. Я наблюдал это, и он составляет около 18 МБ (хотя, похоже, он увеличился за последние 2 дня с 18 МБ в среднем до 25 МБ).
Наш сервер обслуживает API, который принимает некоторые данные и сохраняет их в базе данных mysql. API написан на PHP. Я использовал функции PHP mem_get_usage и mem_get_peak_usage, чтобы понять использование памяти, но они нигде не приближаются к 18 МБ.. (в основном показывает ниже 1 МБ)
Поэтому я не понимаю, что потребляет эту огромную память на процесс apache. Это стало узким местом, поскольку наша общая оперативная память ограничена, и с этим потреблением мы вынуждены ограничивать maxrequestworkers, что приводит к задержке в обслуживании клиентов при высоком трафике.
Типичный вывод от ps:
www-данные 30024 0,0 0,3 494384 26124 ? С 04:27 0:03 /usr/sbin/apache2 -k начать
www-данные 30077 0,0 0,3 494368 26136 ? С 04:28 0:04 /usr/sbin/apache2 -k начать
www-данные 30078 0,4 0,3 494360 25960 ? С 04:28 0:21 /usr/sbin/apache2 -k начать
www-данные 30080 0,1 0,3 494376 26140 ? С 04:28 0:05 /usr/sbin/apache2 -k начать
www-данные 30115 0,2 0,3 494448 26180 ? С 04:28 0:11 /usr/sbin/apache2 -k начать
www-данные 30124 0,1 0,3 494376 26212 ? С 04:28 0:07 /usr/sbin/apache2 -k начать
www-данные 30132 0,0 0,3 494376 26108 ? С 04:28 0:03 /usr/sbin/apache2 -k начать
www-данные 30135 0,0 0,3 494376 26164 ? С 04:28 0:04 /usr/sbin/apache2 -k начать
www-данные 30219 0,0 0,3 494352 26108 ? С 04:29 0:03 /usr/sbin/apache2 -k начать
Любые предложения о том, как контролировать использование памяти для каждого процесса apache2 и как его уменьшить/оптимизировать?