Apache Worker

Изображение яТ by Martina apache worker yatochka.ru

Подключаем модуль mpm_worker — apache2 (v2.4) для платформы deb

Так как в редких случаях модуль mpm_prefork даёт сбой соединения, тем самым влечёт критическое завершение процесса с сигналом 11.
Проблемой этого является то, что модуль prefork запускает по отдельному процессу на каждый запрос, при подключения множества одновременных запросов потребляет большое количество оперативной памяти и при нехватки ресурсов один из процессов может завершится критически.
Требуется включение иной обработки запросов и соединений. Выбор будет mpm_worker или mpm_event.

mpm_worker — хорош в много-поточной системе обработки запросов, тем самым повышает эффективность большого количества соединений. Работа данного модуля заключается в запуске процесса, который разветвляется на несколько потоков, эти потоки работаю как процессы в модуле mpm_prefork они всегда в ожидании входящих запросов от клиента. Worker готов обработать большое количество одновременных запросов, так как каждый запрос требует готовый поток, который уже его ожидает, а в случае с prefork требуется запустить процесс, что является намного требовательней.  Благодаря такой системе mpm_worker экономит значительное потребление оперативной памяти в сравнение с mpm_prefork.

mpm_event — практически аналогичен mpm_worker, но есть некоторые отличия. Event использует 1 выделенный поток, который разветвляется на другие потоки. Выделенный поток передает запрос в разветвленные потоки, только после того как запрос был осуществлен. Как только запрос будет выполнен, поток освобождается и ожидает следующий запрос или выполняет его в порядке очереди. Данный модуль подойдет в том случае, если клиенты не часто отправляют запросы, а чаще используют постоянное соединение с сервером.

Использование mpm_worker гораздо эффективней, поэтому в данной статье мы рассмотрим подключения модуля для apache2 именно mpm_worker.


Проверяем какие модули подключены:
ls -l /etc/apache2/mods-enable/

Проверка на каком mpm уже запущен apache2
apachectl -V | grep -i mpm

Если при попытке подключения модуля mpm_worker командой:
sudo a2enmod mpm_worker

При запуске apache2 командой
sudo service apache2 start
Вы видите ошибку:
apache is running a threaded MPM, but yout PHP module is not compiled to be threadsafe. you need to recompile PHP

Стопим сервер:
sudo service apache2 stop

Так как prefork использует модуль php5, а worker cgi, придётся удалить модуль php5, без паники модуль сgi интегрирует в себя модули для работы php5:
apt-get remove libapache2-mod-php5


Устанавливаем модуль mpm_worker:
apt-get install apache2-mpm-worker libapache2-mod-fcgid

Подключаем модуль fastCgi
sudo a2enmod fcgid

Устанавливаем сgi-php5 и консольную версию:
apt-get install php5-cgi php5-cli

Редактируем Директивы сервера:
Пример:  /etc/apache2/apache2.conf
Добавляем директивы к существующим.

<Directory /var/www>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
Options +ExecCGI
</Directory>
#Если нужна поддержка Алисов зеркал домена.
Alias /aptitude /usr/share/doc/aptitude/html/en
Alias /apt /usr/share/doc/apt-doc

<Directory /usr/share>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
Options ExecCGI FollowSymlinks Indexes
</Directory>
P.S. Для Алисов aptitude должен быть установлен.

Также для доменов добавьте поддержку:
Пример:
<Directory /var/www/вашсайт.com>
Options +ExecCGI 

AllowOverride All
Order Allow,Deny
allow from all
</Directory>
Директивы поправили.

Отключаем модуль mpm_prefork:
sudo a2dismod mpm_prefork

Подключаем модуль mpm_worker.
sudo a2enmod mpm_worker

Если нужно настраиваем worker для проекта и железа индивидуально.
nano /etc/apache2/mods-available/mpm_worker.conf


Можно запускать apache2.
sudo service apache2 start


Внимание, если Вы использовали модули для php5 такие как memcache, Вам нужно их пере-подключить для FASTCGI
/etc/php5/cgi/php.ini
Добавьте в конец документа:
extension=memcache.so
 


Если вы получаете ошибку 500 Internal Service Error при загрузке картинок формата jpg, png, gif и т.д

Не забудьте зайти в 
nano /etc/apache2/mods-available/fcgid.conf
И добавьте ограничение на загрузку:
<IfModule mod_fcgid.c>
FcgidConnectTimeout 20
#Размер в байтах данное значение равно 10 мегабайтам.
MaxRequestLen 10000000
...
Статья "Apache Worker" содержит 0 комментариев

Оставить комментарий

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.