Фальстарт

Конфигурационный файл

  1. Синтаксис
  2. Конфигурация
    1. Параметры FastCGI-приложения
    2. Конфигурация по умолчанию
    3. Стартовая команда
  3. Рекомендации

Синтаксис

Синтаксис конфигурационного файла однозначно определяется в терминах:

Конфигурация

Дополнительные ограничения / соглашения:

Все FastCGI-приложения, которыми должен управлять Пускач, должны быть либо явно описаны в конфигурационном файле, либо должна быть определена конфигурация по умолчанию. Приложение описывается параметром fcgi со вложенной конфигурацией:

  1. req_pool_size 256
  2. # Команда запуска PHP-скриптов
  3. start_cmd
  4. {
  5. mask *.php
  6. mask *.phtml
  7. cmd "/usr/local/bin/php-cgi -f $script_filename"
  8. }
  9. # Конфигурация по умолчанию
  10. default_fcgi
  11. {
  12. unix_socket_prefix "/tmp/puskach/site_user_fcgi_"
  13. io_timeout 10000
  14. max_processes 5
  15. sleep_timeout 30000
  16. request_processing_timeout 10000
  17. requests_per_process 1000
  18. }
  19. fcgi
  20. {
  21. path "/usr/home/site_user/www/myscript.fcgi"
  22. unix_socket_prefix "/tmp/puskach/site_user_myscript_fcgi_"
  23. io_timeout 10000
  24. max_processes 1
  25. sleep_timeout 15000
  26. request_processing_timeout 10000
  27. requests_per_process 100
  28. on_abort_request_behaviour 1
  29. }
  30. ...

req_pool_size — глобальный параметр, устанавливает размер пула запросов, находящихся в обработке, либо ждущих в очереди. При исчерпании пула запросов новые запросы от web-сервера отклоняются. Значение по умолчаню 128.

Параметры FastCGI-приложения

path — путь к FastCGI-приложению, служит для двух целей: (1) запуск приложения и (2) поиск приложения при входящем запросе от web-сервера (во входящем запросе должен передаваться FastCGI-параметр SCRIPT_FILENAME с тем же значением). Может задаваться как абсолютно, так и относительно текущей директории рабочего процесса Пускача (текущую директорию можно установить при старте Пускача в стартовом скрипте).

unix_socket_prefix — префикс имени Unix сокета, используемого для связи Пускача с копиями FastCGI-приложения. Для обеспечения неблокирующей обработки запросов Пускач поддерживает параллельную работу с несколькими процессами одного приложения, именуемыми копиями. Каждая копия слушает свой Unix-сокет, имя которого состоит из префикса и номера копии.

req_queue_len — максимальная длина очереди запросов. Если на момент прихода запроса от web-сервера не находится свободных обработчиков, запрос ставится в очередь; если очередь переполнена, запрос отклоняется. Значение по умолчанию 10.

io_timeout — таймаут ввода-вывода — максимально допустимое время между двумя операциями ВВ. Если по истечении этого времени следующей операции ВВ не последовало, обработка запроса web-сервера будет прервана, а обрабатывающая запрос копия FastCGI-приложения остановлена.

max_processes — максимальное число процессов (копий), которые могут быть параллельно запущены для данного приложения (размер пула процессов).

sleep_timeout — таймаут бездействия — максимальное время простоя копии FastCGI приложения, по истечении которого копия останавливается. Используется для освобождения ресурсов, занятых процессами, длительное время не выполняющими обработку запросов.

request_processing_timeout — таймаут обработки запроса — максимально допустимое время между запросом web-сервера и ответом приложения об окончании обработки запроса. В случае превышения таймаута обработка запроса прерывается, а копия приложения останавливается.

requests_per_process — максимальное число запросов, которое может последовательно обработать копия данного FastCGI-приложения. В случае достижения лимита копия завершается. Полезно для профилактики утечки ресурсов.

on_abort_request_behaviour — выбор поведения при прерывании обработки запроса web-сервером: 0 — корректно завершить обработку запроса, если это возможно, 1 — прервать обработку запроса копией FastCGI приложения. По умолчанию 0. Обратите внимание, что для использования значения 1 необходимо, чтобы возможность прерывания обработки запроса при получении соответсвующего сигнала была реализована в логике FastCGI приложения.

Конфигурация по умолчанию

Конфигурация по умолчанию описывается параметром default_fcgi, аналогично fcgi. В случае, если конфигурация по умолчанию не определена, Пускач будет обрабатывать только запросы, адресованные явно описанным в конфигурационном файле FastCGI-приложениям. Иначе при запросе к любому существующему приложению Пускач будет динамически описывать его, использую конфигурацию по умолчанию. Имеет смысл задавать в конфигурации по умолчанию более строгие ограничения и переопределять их для отдельных скриптов в зависимости от их специфики.

Стартовая команда

Стартовая команда определяет исполняемую программу (как правило, интерпретатор) с набором аргументов командной строки, которая может быть использована для запуска FastCGI-приложений. Путь к исполняемому файлу и аргументы задаются в обязательном параметре cmd. Сложные аргументы, содержащие пробельные символы, необходимо заключать в двойные кавычки. По умолчанию путь к запускаемому скрипту будет передан последним аргументом, для явного указания аргумента необходимо использовать макрос $script_filename.

Для ассоциации стартовой команды со скриптами используется один или более параметров mask. Маска — любая комбинация из значащих символов и служебного символа *, совпадающего в любым колическом любых символов. Для поиска стартовой команды Пускач последовательно сравнивает все маски всех стартовых команд с путем к скрипту до первого совпадения. Если в результате поиска стартовая команда не найдена, будет выполнен прямой запуск скрипта по path.

Рекомендации

Крайне рекомендуется задавать таймаутам и лимитам адекватные реальные значения, это позволит повысить стабильность работы сервера за счет своевременной реакции на возможное зависание приложений. Все параметры нужно выставлять в соответствии со спецификой каждого приложения.

В случае изменения конфигурации для считывания актуальной версии необходим перезапуск Пускача.