У меня большая проблема с моим 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 и увеличивал линейно, пока производительность во время нагрузочного теста не начала ухудшаться.