проблемы apache mod_fcgid - PullRequest
       12

проблемы apache mod_fcgid

4 голосов
/ 31 января 2012

У меня проблема на нескольких серверах, чем использование модуля Apache mod_fcgid для обслуживания сценария cgi, который обрабатывает запрос (проверка заявок и аналогичная обработка), а затем передает файлы на сервер на основе результатов обработки.

Я постоянно получаю следующие ошибки в журналах:

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] mod_fcgid: error reading data, FastCGI server closed connection

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] (32)Broken pipe: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function

[Mon Jan 30 23:13:34 2012] [warn] [client 37.8.52.128] mod_fcgid: can't apply process slot for /var/www/cgi-bin/assetx.fcgi

Эти проблемы приводят к медленной работе сервера, а иногда приводят к ошибке временно недоступной службы.

На серверах большой трафикна них я в настоящее время настроил следующие директивы fcgi как показано ниже:

FcgidMaxRequestsPerProcess       0
FcgidMaxProcesses       300
FcgidMinProcessesPerClass 0
FcgidIdleTimeout        240
FcgidIOTimeout  240
FcgidBusyTimeout 300

средняя нагрузка на серверы нормальная, число процессов в среднем 250 процессов.

У меня естьпровел исследование в течение нескольких дней по этой проблеме, некоторые говорят, что это проблема с разрешением, я последовал их предложению, не помогло.Я попытался настроить параметры выше, это последние значения, которые я пробовал, но они не сработали.Я также пытаюсь использовать nginx вместо apache, но не могу найти подходящий способ запустить скрипт cgi с такой высокой нагрузкой на сервер, используя nginx.

Что я могу сделать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 22 февраля 2013

Ваше приложение умирает, прежде чем Apache сможет успешно с ним связаться.Ответ заключается в том, чтобы выяснить, почему приложение умирает.

Процесс FastCGI никогда не должен прекращаться или завершаться даже в случае ошибки.Apache ожидает, что скрипт FastCGI будет продолжать там.

Вы упоминаете, что у вас есть скрипт cgi.Как вы изменили его для поддержки FastCGI?

Обычно вам нужно переключиться на что-то вроде CGI :: Fast, удалить все вызовы, чтобы умереть и выйти, и реорганизовать скрипт для запуска с использованием цикла CGI :: Fast while.

...