Я работал над проверкой своего веб-сервера, и у меня возникли некоторые проблемы. Прежде всего, используя top, я заметил, что Apache использует много памяти, что не удивительно, но 130-150M на процесс кажутся высокими даже для apache. Я запускаю 2.2 worker MPM, используя mod_fcgid для php. У меня создалось впечатление, что переход по этому пути снизит потребление памяти, но, похоже, это не сильно изменилось, когда я переключился с Prefork и mod_php. Что мне здесь не хватает? Я читал, что хорошо настроенный apache должен использовать около 15-25 МБ на процесс. Я далеко?
Вот список модулей, собранных с моей версией apache:
Скомпилировано в модулях:
core.c
mod_authn_file.c
mod_authn_default.c
mod_authz_host.c
mod_authz_groupfile.c
mod_authz_user.c
mod_authz_default.c
mod_auth_basic.c
mod_cache.c
mod_mem_cache.c
mod_include.c
mod_filter.c
mod_deflate.c
mod_log_config.c
mod_logio.c
mod_env.c
mod_expires.c
mod_headers.c
mod_unique_id.c
mod_setenvif.c
mod_version.c
mod_proxy.c
mod_proxy_connect.c
mod_proxy_ftp.c
mod_proxy_http.c
mod_proxy_scgi.c
mod_proxy_ajp.c
mod_proxy_balancer.c
mod_ssl.c
worker.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_info.c
mod_suexec.c
mod_cgid.c
mod_negotiation.c
mod_dir.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c
Есть ли какие-либо из них, особенно большие и непонятные. Я создал общую версию, используя простую настройку apache на сервере. Думаю, там есть жир, который нужно обрезать.
Другой вопрос: есть ли общая память между процессами? Для каждого процесса использование более 130 МБ кажется подозрительным. Есть ли способ ограничить объем используемой памяти? Настройки кеша?
У Apache есть документация по этому поводу, но она находится в странном месте.
Видеть http://wiki.apache.org/httpd/DoS , который объясняет некоторые из того, что вы видите:
Обратите внимание, что использование памяти, сообщаемое такими инструментами, как ps (1) и top (1), включает общую память, поэтому они сообщают очевидные цифры, которые намного превышают фактическое использование apache для каждого процесса.
Итак, ваша проблема с "верхней памятью" - это своего рода иллюзия.
Это виртуальный память, а не физическая память. Виртуальная память обычно не считается дефицитным ресурсом. Попытка уменьшить потребление виртуальной памяти Apache будет пустой тратой времени. Если у вас нет реальной проблемы с реальными симптомами, решать нечего.