Ни для кого не секрет что Apache это тяжелый веб-сервер, но бывает так, что от него не получается отказаться в силу ряда причин. И вот, когда ваша система начинает валиться от нагрузки создаваемой Apache, приходит время настройки повышающей производительность веб-сервера. Путей для оптимизации несколько и выбор однолго из них зависит от различных факторов. В этом посте я расскажу немного о паре способов.
По умолчанию Apache компилируют с mpm mod_prefork.c. Проверим с какими модулями он собран:
| 1 2 3 4 5 6 | [root@localhost# httpd -lCompiled in modules:core.cprefork.chttp_core.cmod_so.c |
Перед установкой apache рассмотрим два варианта которые влияют на производительность и посмотрим как это работает:
С этим MPM мы улучшаем нашу производительность за счет снижения потребления памяти. Apache запускается как одиночный процесс и запускает множество потоков серверного процесса. Мы можем ограничить количество потоков через директиву apache — ThreadsPerChild.
Преимущества:
Недостатки:
Директивы влияющие на производительность модуля worker:
Основная настройка среднего вебсервера с 2-3 гигабайтами памяти:
| 1 2 3 4 5 6 7 8 | <ifModule worker.c>StartServers 4MaxClients 320MinSpareThreads 40MaxSpareThreads 80ThreadsPerChild 40MaxRequestsPerChild 0</ifModule> |
С модулем prefork существует основной процесс и на каждый запрос apache создает еще один подпроцесс. Родительский процесс стартует от имени root, и каждый дочерний подпроцесс запускается от имени и группы согласно заданным директивам apache.
Таким образом получается изоляция для каждого запущенного процесса, так что проблема одиночного процесса не будет вам сниться в ночных кошмарах ;)
Плюсы:
Минусы:
Директивы влияющие на производительность модуля prefork:
Основная настройка среднего вебсервера с 2-3 гигабайтами памяти:
| 1 2 3 4 5 6 7 8 | <ifModule prefork.c>StartServers 4MinSpareServers 25MaxSpareServers 50ServerLimit 270MaxClients 270MaxRequestsPerChild 10000</ifModule> |
| 1 | # ps -ylC httpd --sort rss |
| 1 | TimeOut 30 |
| 1 | KeepAlive On |
| 1 | MaxKeepAliveRequests 70 |
| 1 | KeepAliveTimeout 2 |
| 1 2 3 | <directory />AllowOverride None</directory> |
| 1 2 3 | <directory />Options FollowSymLinks</directory> |
| 1 2 3 | <directory /document/path>Options +FollowSymLinks -SymLinksIfOwnerMatch</directory> |
Если вы настроены решительно и хотите еще больше оттюнинговать ваш Apache то вам сюда: http://httpd.apache.org/docs/2.2/mod/#core
Восстановить доступ к странице ВКонтакте можно относительно просто. И для этого даже не потребуется помощь…
Реверс инжиниринг электроники и программного обеспечения — увлекательная и важная дисциплина, играющая ключевую роль в…
Рынок смартфонов не стоит на месте и каждый год пополняется новыми моделями. Компания Apple традиционно…
Запуск онлайн-бизнеса может показаться сложной задачей, но на самом деле этот процесс можно существенно упростить,…
Если Вы хотите продвинуть свой сайт в поисковых системах, одним из самых важных аспектов является…
Корейская компания Samsung зарекомендовала себя на потребительском рынке как производитель флагманов, так и бюджетных смартфонов.…