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