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

Оптимизация Apache - prefork MPM

Я прочитал много сообщений о конфигурации Apache и попытался найти лучшие значения для наших серверов. Чтобы убедиться, что я использовал лучше всего JMeter имитировать 2100 соединений в секунду. После многих раундов тонкой настройки я получил следующую конфигурацию:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   10
ServerLimit     2048
MaxClients       2048
MaxRequestsPerChild  20000
</IfModule>

Детали сервера:

[root@web06 ~]# free
                 total       used       free     shared    buffers     cached
    Mem:       3814660    1070152    2744508          0     146788     766944
    -/+ buffers/cache:     156420    3658240
    Swap:      5210104          0    5210104
[root@web06 ~]# grep -c processor /proc/cpuinfo
4
[root@web06 ~]# uname --a
Linux web06 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux

Память, используемая одним процессом Apache:

[root@web06 ~]#  cat /proc/5903/status  | grep VmRSS 
VmRSS:     10076 kB

Я знаю, что моя конфигурация немного высока, но конфигурация дала мне лучший результат на стресс-тесте. Буду признателен за ваш вклад, стоит ли что-то менять?

Обратите внимание: я знаю, что есть лучшая альтернатива Apache, но на данный момент у меня нет ресурсов, чтобы внести такие изменения.

Спасибо!

Хорошо, может ли ваш сервер выполнять 2048 одновременных процессов Apache (как вы установили в ServerLimit / MaxClients)? Бьюсь об заклад, это не так, и на самом деле вам не нужно столько одновременных рабочих Apache. Я настоятельно рекомендую вам настроить асинхронный обратный прокси, например nginx или lighttpd для разгрузки обработки клиентов с медленными подключениями к этому асинхронному прокси. И поверьте мне, большинство общедоступных веб-клиентов достаточно медленны, чтобы отнимать большую часть рабочего времени Apache только для загрузки в них уже сгенерированного контента. И я не думаю, что вам когда-либо понадобится более 25 одновременных рабочих Apache, если вы правильно настроите обратное проксирование.