Назад | Перейти на главную страницу

О параметре MPM Prefork MaxClient на сервере 256M RAM

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