Поиск по сайтам о языке программирования Perl



Предложить сайт

Apache, mod_perl и mod_proxy

Однажды, в 2005–м году на одном из серверов скопилось очень много сайтов, обслуживаемых одним Apache. Из – за достаточно хорошей посещаемости многих из этих сайтов, сервер начинал тормозить. Мы понимали, что вскоре сервер от большого количества запросов просто «сдохнет».
Нами были испробованы различные варианты решения проблемы, в том числе увеличение количества дочерних процессов Apache, обслуживающих запросы клиентов. Но они поглощали всю оперативную память.
Мы решили исследовать те области. Куда тратится весь ресурс Apache. Обнаружили, что это простые и скриптовые файлы, причем именно на скриптовые файлы приходилась основная доля ресурса сервера.
Вывод напрашивался сам по себе: необходимо разделение файлов. С помощью mod_proxy наша задумка удалась. Схема внедрения этой задумки получилась следующая:
Запускаем два экземпляра Apache, причем один, облегченный обрабатывает простые файлы. Второй, благодаря подключенному mod_perl , работает со скриптами, а результаты подаются первому.
Более детально это выглядит так. Путем клонирования системного сервиса httpd в httpdp и самого файла /usr/bin/httpd в httpd_perl происходит запуск /usr/bin/httpd_perl. Для этих двух клонов разнесли конфигурации и сделали следующие изменения:
1. httpd слушается только интернет. Для всего сервера или для отдельного VirtualHost в конце добавлено следующее:
RewriteEngine On RewriteRule \. (html|htm|css|js|txt|gif|jpg|jpeg|png|ico)$ - [last]
RewriteRule \.(mp3|wmv|rar|zip|pdf|rtf|doc|xls)$ - [last]
RewriteRule ^/(.*)$ http://localhost:<нужный локальный порт>/$1 [proxy] ProxyPassReverse /pcgi/ http://localhost:
<нужный локальный порт>/pcgi/
2. httpdp слушает исключительно локальные порты, на каждый сайт по одному. К нему подключен mod_perl:
Alias /pcgi/ /home/httpd/modperl/pcgi/
PerlOptions +Parent PerlSwitches -
I/home/httpd/modperl/pcgi
SetHandler perl-script PerlResponseHandler
ModPerl::Registry PerlOptions +ParseHeaders Options +ExecCGI
Все эти изменения дали положительный результат. Система рабочая, а памяти расходуется меньше, сохраняя высокую рабочую скорость.