У меня вопрос по настройке Apache MPM Prefork на серверах VPS.
В одной из статей slicehost предлагается установить MaxClients равным 40, если на моем виртуальном сервере 256 МБ ОЗУ. (http://articles.slicehost.com/2010/5/20/configuring-the-apache-mpm-on-debian)
Однако, поскольку каждый запрос клиента использует около 50 МБ оперативной памяти, подкачка гарантирована, и мой VPS замедляется.
PID RSS COMMAND
10146 45944 /usr/sbin/apache2 -k start
10147 52528 /usr/sbin/apache2 -k start
10150 49680 /usr/sbin/apache2 -k start
10151 48756 /usr/sbin/apache2 -k start
Я обнаружил, что если вместо этого я установлю MaxClients на 4 (!), Я не получу никакого обмена, и веб-сервер должен быть быстрее (или я ошибаюсь?)
Итак, я не понимаю, почему они предлагают вместо этого 40.
Спасибо
Количество MaxClients, которое вы можете иметь, зависит исключительно от характера вашего сайта.
Если вы обслуживаете в основном статический контент, то Apache не использует очень много памяти, и для MaxClients можно установить 40 (или больше).
С другой стороны, если у вас что-то сильно загружает память (например, вы запускаете CMS, например Drupal или блог с WordPress), требования к памяти для каждого процесса будут сильно увеличиваться, что приведет к уменьшению возможного значения MaxClients. С этими тяжелыми приложениями PHP один процесс может легко потреблять от 10 до ??? мегабайты оперативной памяти.
Вероятно, они предполагают это, потому что 50 МБ памяти на запрос - это не обычное дело.
Вам, вероятно, следует проверить, можете ли вы избавиться от каких-либо модулей, которые вы используете. Также проверьте, можете ли вы переместить какой-либо mod_ (например, mod_php) в fcgid.
После этого у вас, вероятно, останутся только потокобезопасные модули, и вы сможете безопасно переключиться на рабочий MPM, что, вероятно, решит все ваши проблемы с производительностью.