Я работал над улучшением использования памяти на нашем Centos 5.5 VDS, который теперь имеет 512 МБ ОЗУ. Я смог использовать сценарий настройки, чтобы значительно улучшить конфигурацию MySQL, но у меня немного больше проблем с уменьшением использования памяти Apache. Частично моя проблема заключается в противоречивых рекомендациях на различных веб-сайтах, форумах и т. Д. Будучи производственным сервером, обычный цикл модификации и тестирования, который я бы использовал на тестовой машине, был бы слишком разрушительным.
Чтобы добавить к моему недоумению, у меня есть машина разработчика, настроенная настолько близко, что я могу сделать ее клоном VDS, и она использует меньше оперативной памяти с той же самой конфигурацией Apache. Хотя, очевидно, сложно применить одну и ту же нагрузку, я очень близок, сравнивая их в спокойное время дня или ночи.
Есть ли сценарий настройки для Apache, подобный тем, которые доступны для MySQL, который может помочь оптимизировать конфигурацию, анализируя, что происходит во время работы сервера?
Редактировать:
Либо я не понял, либо люди не читают вопрос, поэтому я уточню.
Я не прошу никого давать рекомендации или предлагать альтернативы. Я спрашиваю, знает ли кто-нибудь здесь сценарий, который может анализировать, что происходит на сервере, и давать рекомендации относительно конфигурации Apache на основе этой информации.
Я не знаю ни одного такого сценария для Apache, вероятно, потому что, по сравнению с MySQL, есть только несколько вещей, которые влияют на использование памяти Apache:
Ниже перечислены некоторые конкретные вещи, которые вы можете попробовать. Попробуйте сначала измерить эффект и протестировать на своей платформе разработки, если это возможно, и / или постепенно внедряйте любые изменения на рабочем сайте.
MaxClients
как можно ниже. На сайтах с небольшим объемом вам, вероятно, сойдет с рук цифры меньше 10. Вы также можете оставить другие связанные настройки лайк MaxSpareServers
низкий.MaxRequestsPerChild
если вы используете какие-либо динамические сценарии или видите, что экземпляры Apache замедляют увеличение использования памяти с течением времени. Это предотвращает чрезмерное использование памяти скриптами, страдающими от недостатка памяти или утечки.Почему бы не взглянуть на веб-сервер с небольшим объемом памяти: NGINX? Он известен тем, что использует мало памяти и рекомендуется для сайтов, работающих на VPS.
В любом случае, 400 МБ в наши дни - это немного для веб-сервера, и вы можете подумать о замене коробки! Apache2 съедает много памяти. Он должен быть настроен, а параметры конфигурации сбивают с толку.
Отредактируйте свои конфигурации apache, обычно в /etc/apache2/apache2.conf
В настройках mpm_prefork_module установите StartServers на 1, MinSpares на 1 или 0, а MaxSpares на что-то вроде 3. Например, 10 запущенных процессов будут перегружать сервер размером 512 МБ (минимум по умолчанию для Apache2 составляет 256 МБ, но вы ничего не можете сделать. с этим!). Для уменьшения занимаемой площади / небольшого трафика на сервере вы можете попробовать что-то вроде этого:
<IfModule mpm_prefork_module>
StartServers 2
MinSpareServers 2
MaxSpareServers 3
MaxClients 150
MaxRequestsPerChild 500
</IfModule>
Измените указанные выше настройки при тестировании нагрузки трафика, чтобы увидеть, могут ли новые настройки справиться с этим.
Вы можете настроить Apache KeepAlive на более низкое значение (2 ~ 5 в моем случае), что может ожидать меньше серверных процессов, ожидающих соединений незанятых клиентов, которые могут не запрашивать больше контента.
KeepAlive On
KeepAliveTimeout 2
MaxKeepAliveRequests 80
Уменьшите время ожидания сервера перед ошибкой запроса:
Timeout 45
Вы также можете прочитать это: http://httpd.apache.org/docs/2.0/misc/perf-tuning.html
Но опять же, эта настройка предназначена для очень небольшого трафика. и NGINX может делать гораздо больше с тем же оборудованием ..