Настройка Apache2/mpm-worker, чтобы он не занимал всю оперативную память сервера

На сервере запущено около 40 сайтов WordPress. Первоначально я настраивал сервер, используя mod_php и mpm-prefork, когда на сервере было 2 ГБ памяти, и он работал хорошо. Однако недавно я обновил сервер, чтобы использовать FastCGI, suexec и mpm-worker. С тех пор я не могу заставить Apache не сожрать всю свободную оперативную память до тех пор, пока она не начнет меняться и в конечном итоге перестает отвечать.

Мы увеличили размер сервера с 2 ГБ до 4 ГБ в надежде облегчить проблему, но примерно через 7 часов сервер занял все 4 ГБ и вернулся к замене.

Под mpm-prefork мы просто установили MaxClients и все было хорошо. Впрочем, для себя под mpm-worker я не могу найти настройки, которые работают. Любая комбинация MaxRequestsPerChild, ThreadsPerChild и MaxClients по-прежнему приводит к одному и тому же. Я никогда раньше не работал с mpm-worker, поэтому я не уверен, как это настроить. Я потратил бесчисленные часы на поиск настроек в Apache2.conf и перепробовал десятки настроек, но все они ведут по одной и той же дороге сервера, занимая всю память.

С сервером 4 ГБ, оставляющим около 400 МБ для других процессов и знающим, что каждый дочерний поток Apache работает около 50 МБ при порождении, какая комбинация настроек должна быть удобной, чтобы сервер не использовал максимально ОЗУ?

Текущие настройки:

<IfModule mpm_worker_module>
    StartServers          6
    ServerLimit          25
    MinSpareThreads      25
    MaxSpareThreads      50
    ThreadLimit          75
    ThreadsPerChild      25
    MaxClients           75
    MaxRequestsPerChild  2000

1 ответ

Мне повезло с mod_fcgid с mpm-prefork на виртуальной машине небольшого размера, работающей на Amazon EC2. Мне не нужно было ничего настраивать, но моя нагрузка отличалась от вашей.

Но что вы должны сделать, это выяснить, какая часть WordPress занимает так много оперативной памяти. Я бы предположил, что вы используете кучу оперативной памяти через множество веб-пользователей, и не только потому, что Apache работает некоторое время.

Другие вопросы по тегам