Как отследить источник истечения времени ожидания FastCGI на PHP и IIS 7.5?
У меня есть проблема, которая, я надеюсь, вы, эксперты, действительно можете помочь мне найти причину. Я получаю случайные тайм-ауты страниц (которые проявляются как ошибка 500), которые я не могу найти основную причину.
Версия PHP:
PHP 5.5.12 (cli) (built: Apr 30 2014 11:20:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
Версия IIS:
Version 7.5.7600.16385
FastCGI:
C:\Users\lock>%windir%\system32\inetsrv\appcmd list config -section:system.webSe
rver/fastCgi
<system.webServer>
<fastCgi>
<application fullPath="C:\php5\php-cgi.exe" activityTimeout="700">
<environmentVariables>
</environmentVariables>
</application>
</fastCgi>
</system.webServer>
Я включил журналы с ошибочными запросами и получаю следующее для случайных страниц:
C:\php5\php-cgi.exe - The FastCGI process exceeded configured activity timeout
Принятое время 700007 мсек
Прошлой ночью я создал 2 файла, которые просто запускают очень легкий запрос на MySQL и ODBC и запускали их каждую минуту. Проверяя это утро, единственным файлом, который привел к Failed Request, был ODBC, поэтому я уверен, что проблема заключается в подключении к ODBC. Я создал новый источник данных ODBC, подключенный к тому же серверу и драйверу, но к другой базе данных, и все еще получаю тайм-ауты, поэтому я не думаю, что это сама база данных. Я собираюсь попробовать и посмотреть, если это odbc_pconnect
или odbc_exec
функция, которая истекает. Мне удалось воспроизвести проблему через мой собственный браузер (он зависал в течение почти 15 минут до создания журнала Failed Request), и в это время я смог запустить другой браузер и запустить ту же страницу без проблем, поэтому я не могу думаю, что это как-то связано с блокировкой таблицы в базе данных или что-то нет.
Любая помощь будет принята с благодарностью - мы действительно не знаем, куда идти отсюда!