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

Почему процесс apache2 использует 190 МБ виртуальной памяти?

У меня большая проблема с моим apache2. Я использую LAMP с debian 6, 64bit.

Вот экран после 24 часов работы, заказанный% MEM:

вы можете видеть, что VIRT для apache2 составляет 186 МБ.

Это совсем не хорошо. Что я могу сделать?

Учтите, что этот apache обслуживает только пару виртуальных хостов, а страницы PHP требуют более 3 МБ памяти.

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    ServerLimit      1250
    MaxClients            1250
    MaxRequestsPerChild   1500
</IfModule>

Спасибо

Это такая большая проблема?

Используемое вами поле VIRT - это общий объем памяти, который может использовать процесс. Следующий столбец ближе к сумме, которую он использует. Даже в этом случае часть этого будет распределяться между процессами. Я бы рекомендовал прочитать, как Linux управляет виртуальной памятью, если вы собираетесь заниматься администрированием Linux.

Глядя на другую статистику, у вас все еще есть 1 ГБ свободной оперативной памяти, поэтому коробка даже не пыталась заполнить свои дисковые кеши, поэтому похоже, что оперативной памяти достаточно.

Хотя Mahnsc прав, удаление неиспользуемых модулей поможет как в памяти, так и в безопасности.

Сказав все это, он выглядит немного большим. Они выросли? Сбрасывает ли перезагрузка использование меньшего объема памяти? Если он растет, это может быть проблемой, но если он в основном статичен, тогда все в порядке.

Если вы хотите измерить фактический объем памяти, занимаемый apache, то это можно сделать, сравнив вывод «бесплатно» с количеством процессов httpd.

Как говорит mahnsc - вы должны удалить ненужные вещи из httpd (вы также можете удалить символы - но это не такая уж большая экономия).

всего пара виртуальных хостов и страницы PHP

Может быть - это зависит от того, что на самом деле делает код. Вы можете подумать о переходе на fastCGI (это не помогает использовать память, но позволяет увидеть, связана ли проблема с apache или PHP).

Несмотря на это, мало доказательств того, что это действительно влияет на производительность.

Выгрузите все модули, которые вы не используете или не собираетесь использовать. Если вы используете php и вам не нужна поддержка mod_proxy или mod_jk, выгрузите их. Это должно помочь уменьшить след каждого ребенка. Вы также можете выгрузить большую часть модулей mod_auth_ * и mod_authn_ *, если вы не выполняете какую-либо аутентификацию с помощью apache.

Лимит сервера слишком велик. Должно быть, в зависимости от вашего приложения, примерно в 10 раз больше ядер ЦП. Запустите нагрузочный тест с JMetter для трафика, который вы ожидаете при высокой нагрузке. а затем установите ServerLimit соответственно. Я бы начал с двух ядер #CPU и увеличивал линейно, пока производительность во время нагрузочного теста не начала ухудшаться.