Apache «httpd» процесс, используя всю память моего сервера

9

У моего небольшого экземпляра ec2 с 1,7 ГБ памяти, использующего Amazon AMI на базе CentOS, есть проблема с Apache, использующим слишком много памяти, чем следовало бы. Если вы посмотрите на снимок экрана, использование памяти будет на уровне 90-100%, пока я не перезагружу службу httpd, где она запустится снова, увеличивая скорость до 90+%.

введите описание изображения здесь

Я был бы очень признателен за помощь в поиске проблемы. Возможно ли это "нормальное" поведение Apache, чтобы использовать всю доступную память? Или есть возможная утечка, которую я должен выследить. В данный момент я немного озадачен тем, что может происходить.

Мы используем prefork Apache MPM, а не sql или что-то подобное - просто apache. Сайт здесь .

Amivit
источник
1
Кажется, он не использует Swap, так в чем же проблема?
HTTP500
Разве не должен беспокоить тот факт, что он использует так много памяти? Извините за мой опыт новичка, я думаю, это неверное предположение. Может быть, это нормальное поведение, и что Apache предназначен для использования всей памяти, которую он может захватить, несмотря на то, что он является веб-сайтом с низким трафиком?
Амивит
1
Я заметил, что вы используете NewRelic, который также может регистрировать время, проведенное в apache (может быть полезно), если вы добавите эту строку в ваш httpd conf: RequestHeader set X-Request-Start "%t"если вы еще этого не сделали. Это будет выглядеть как «Очередь запросов», когда вы перейдете на сервер приложений> Обзор - это может помочь вам разобраться в сути проблемы.
КМ.

Ответы:

8

Как сказал HTTP500, вам, вероятно, не стоит беспокоиться об этом, если машина фактически не задыхается. Посмотрите на Помощь! Linux съел мою оперативную память! , Это не совсем аналогичная ситуация, поскольку у вас есть процессы, а не буферы, использующие ОЗУ, но это не так уж и далеко: физическая ОЗУ вашей машины - это ресурс, который нужно использовать либо с буферами ядра, либо с запасными рабочими процессами Apache для быстрой обработки входящих Запросы. Если вы не используете оперативную память, вы переплатили за размер вашей коробки.

В любом случае, если вы хотите поиграть с настройками MPM, документация Apache: http://httpd.apache.org/docs/current/mod/prefork.html.

Вы можете уменьшить MinSpareServers, StartServers и т. Д., Поскольку вы заявили, что на сайте мало трафика. Тогда у вас будет больше свободной оперативной памяти, которая будет использоваться буферами ядра для их гнусных целей.

CJC
источник
4

Linux, использующий всю вашу память, работает нормально, память, которая не используется, в противном случае переименовывается в дисковый кеш. смотри: linux съел моего барана

Вы можете убедиться в этом, посмотрев на выходные данные free -mи ожидая увидеть что-то вроде этого:

             total       used       free     shared    buffers     cached
Mem:          7889       6887        101          0        106       2307
-/+ buffers/cache:       5373       3416
Swap:         1903         17       1886

строка +/- buffers / cache - это та, которую вы хотите. Он добавляет кэшированный RAM к свободному, чтобы дать вам лучшее представление о том, сколько памяти действительно доступно. В этом случае Вы хотите обратить внимание на номер 3416, а не 101.

тушеное мясо
источник