PHP-CGI начал обслуживать пустые страницы
Мой PHP-CGI начал обслуживать пустые страницы без видимой причины, пока я не перезапустил процесс.
Я хочу знать почему.
К сожалению, "рабочий" конфигурационный файл PHP не имеет error_log по умолчанию. Мой журнал ошибок Nginx также не отображал ошибок, связанных с PHP. Это, вероятно, безнадежный случай, но я спрашиваю на всякий случай.
Вот моя установка
- Nginx 0.8.2
- PHP 5.2.6-3ubuntu4.1 с Suhosin-Patch 0.9.6.2 (cli) (сборка: 23 апреля 2009 14:37:14)
- PHP APC 3.0.19-2
- spawn-fcgi v1.6.2 (ipv6) - оболочка fastcgi от lighttpd
Есть идеи, что могло вызвать ошибку?
Обновить
Я думаю, что я изолировал проблему. Я использовал Monit для автоматического перезапуска PHP, когда он начинал гасить. Мои журналы ошибок PHP пустые.
Но я понял, что если я отключу плагин Wordpress под названием WP-SuperCache, мой PHP перестанет сбрасываться каждые ~10 часов. До сих пор мой PHP работал уже 3 дня подряд. У кого-нибудь есть предложения по этому поводу?
6 ответов
Supercache генерирует полные кешированные версии страниц, а также выполняет некоторое другое внутреннее кэширование, возможно, существует некоторая проблема с синхронизацией в ситуациях высокой нагрузки. Я бы проверил вашу папку кеша, чтобы убедиться, что она не содержит пустых файлов. Если это так, возможно, у вас проблема с блокировкой файлов. Решение такой проблемы может быть сложным и, вероятно, потребует от вас открыть тикет с ошибкой, так как это, скорее всего, проблема с самим кодом.
Вы пытались фактически остановить службу fcgi и запустить ее снова, а не перезапустить. у меня были похожие странные вещи при перезапуске fcgi
Проверьте статус ответа на ваши запросы, если это произойдет снова (например, curl -i), и если статус не равен 200, проверьте страницы с ошибками (в частности, те страницы с указанным номером ошибки) и убедитесь, что это не так. установить для перенаправления таким образом, что может вызвать бесконечный цикл.
Если статус ответа 200, проверьте, есть ли в ответе какой-либо текст, кроме заголовков HTTP.
Не ответ, а предложение - замените spawn-fcgi на php-fpm, это более настраиваемо.
PS. может быть, у вас есть специальная 50-кратная ошибка перенаправления страницы в nginx.conf
UPD: сегодня я столкнулся с подобной проблемой, когда nginx+php начал обслуживать пустые страницы. Мое исследование показало, что он отправляет пустую страницу независимо от того, что php выдал исключение. Может быть, это какая-то директива php.ini, которая служит пустым вместо ошибки. Я должен изучить журналы и т. Д. Вайп.
UPD2: посмотрите на ваш php.ini, в нем есть 2 параметра, которые нужно изменить, чтобы увидеть ошибки php:
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
Это обычная проблема, лучшее, что вы можете сделать, это каждую ночь перезапускать spawn-fcgi и просматривать журналы ошибок. Небольшая программа Python LogWatch, которая перезапустит ваш PHP, можно найти здесь.
http://hostingfu.com/article/keeping-your-php-fastcgi-processes-alive
Выражение "самопроизвольно произошло за одну ночь" звучит интересно... Возможно ли, что ваш хост начал добавлять дополнительные заголовки статуса ко всему трафику? Если это так, вы можете увидеть эту ошибку:
Joomla! php, FastCGI, пустая страница и дубликат заголовка "Статус"