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, пустая страница и дубликат заголовка "Статус"

Другие вопросы по тегам