18.05.2013

read data timeout in 40 seconds

Многие встречаются достаточно часто с этой ошибкой. Очень популярно мнение, что нужно увеличить параметр FcgidIOTimeout в конфиге FastCGI. Отчасти так оно и есть. 40 секунд - это дефолтное значение FcgidIOTimeout, если оно не задано в конфиге в явном виде.

Первое, на чем хотелось бы сделать акцент: FcgidIOTimeout - это время, которое отведено под то, что Апач пытается подсоединиться к приложению FastCGI. То есть это до того, как началось исполнение кода PHP и к PHP-интерпретатору и его ограничениям по времени никакого отношения не имеет. Поэтому не надо думать, что скрипту не хватает время для исполнения. На момент вылета этой ошибки, скрипт даже еще не начал исполняться - его никто не принимает в работу.

Причина сводится к простой фразе: Апачу не отвечает ни один из инстансов FastCGI. А это уже может иметь сколько угодно разных причин. Например FastCGI-процессы зависли или уперлись в лимит FcgidMaxProcessesPerClass (максимальное количество процессов на одного пользователя). В таком случае ждать можно вечно и накручивать время ожидания - бесполезно.

Вывод: искать в чем пробема нужно не глупым повышением цифры в FcgidIOTimeout, а выяснением, почему Апач не может обратиться к FastCGI аж в течении 40-ка секунд. 

Комментариев нет:

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