Lighttpd + spawn-fcgi | Lighttpd

Попробовал Lighttpd без spawn-fcgi на достаточно нагруженном сервере получил тормоза. :) Апач работал быстрее хотя и памяти потреблял больше.
Пробуем решить проблему динамического управления процессами php-cgi.


Пересобираем lighttpd с поддержкой spawn-cgi, получаем в /usr/local/etc/rc.d скрипт запуска spawn-fcgi
Смотрим:

#Меняем NO на YES
: $spawn_fcgi_enable="YES"'
#Путь к php-cgi
: ${spawn_fcgi_app="/usr/local/bin/php-cgi"}
 #Сокет на котором spawn-fcgi будет слушать
: ${spawn_fcgi_bindaddr="127.0.0.1"}
: ${spawn_fcgi_bindport="9000"}

Можно запустить скрипт:

#/usr/local/etc.rc.d/spawn-fcgi start

Смотрим запустились ли процессы php-fcgi

#ps -awx | grep php-cgi

Далее конфиг модуля fastcgi лайти. Комментируем секцию с путями сокета. Оставляем php-tcp (кстати можно указать айпи другой машины и распараллелить нагрузку – фонтенд – с лайти, бэкенд – с fcgi):

fastcgi.server = ( ".php" =>
#                   ( "php-local" =>
#                     (
#                       "socket" => socket_dir + "/php-fastcgi-1.socket",
#               "bin-path" => "/usr/local/bin/php-fcgi",
#                                     "max-procs" => 1,
#                       "broken-scriptfilename" => "enable",
#                     )
#                   ),
                   ( "php-tcp" =>
                     (
                       "host" => "127.0.0.1",
                       "port" => 9000,
                       "check-local" => "disable",
                       "broken-scriptfilename" => "enable",
                     )
                   ),

                   ( "php-num-procs" =>
                     (
                       "socket" => socket_dir + "/php-fastcgi-2.socket",
#               "bin-path" => "/usr/local/bin/php-cgi",
                                      "bin-environment" => (
                         "PHP_FCGI_CHILDREN" => "16",
                         "PHP_FCGI_MAX_REQUESTS" => "10000",
                       ),
                       "max-procs" => 5,
                       "broken-scriptfilename" => "enable",
                     )
                   ),
                )

Получаем динамически распределенную нагрузку лайти с fcgi