Nginx +PHP-FPM 502 Плохой шлюз
Я получаю 502 Bad Gateway
от Nginx в строке PHP-кода, который отлично работает в других местах моей программы ($this->provider = new OAuthProvider();
) и который отлично работал раньше. Это сообщение, которое я получаю в журнале ошибок Nginx для каждого 502:
Ошибка Recv() (104: Сброс соединения одноранговым узлом) при чтении заголовка ответа из вышестоящего
В журнале PHP-FPM для каждого 502 есть предупреждение:
[ПРЕДУПРЕЖДЕНИЕ] [www пула] ребенок 17427 вышел по сигналу 11 СИГСЕГВ после 142070.657176 секунд от начала
После внесения ряда изменений в файл nginx.conf я застрял и был бы очень признателен за любые указания, что делать дальше.
Я использую Nginx 0.7.67 и PHP 5.3.2 в Ubuntu 10.04.
6 answers
Возможноhttp://pecl.php.net/bugs/bug.php?id=17689 или идентификатор ошибки #18138
Ваш PHP-процесс потерпел крах из-за segfault ("сигнал 11 SIGSEGV"), из-за чего Nginx увидел "сброс соединения одноранговым узлом" (в данном случае PHP является "одноранговым узлом", и Nginx говорит вам: "Послушайте, он повесил трубку, прежде чем я смог получить от него ответ").
Проверьте страницу базы данных ошибок PHP на как сообщить об ошибке, которую кто-то захочет исправить, чтобы узнать, как получить обратную трассировку segfault, чтобы вы могли сообщить об этом.
У меня была такая же проблема с APC. поэтому я удалил его и вместо него установил eaccelerator. пока никаких проблем.
У меня были аналогичные проблемы с nginx/lighttpd+php-fcgi (с использованием spawn-fcgi), используете ли вы какой-либо кэш кода операции для php? Что я обнаружил довольно давно, так это то, что xcache вызывал странное поведение в php-fcgi, некоторые процессы php-fcgi случайным образом умирали, я не смог найти какой-либо закономерности. Я бы рекомендовал взглянуть на настройки apc (или другого кэша кодов операций), если вы их используете. Прямо сейчас я использую nginx + php-fpm во freebsd и не испытываю никаких проблем.
ZendOptimizer + APC +php-fpm 5.2.14 дает постоянно воспроизводимый SIGSEGV даже на phpinfo();.
Попробуйте выключить сухосин. Иногда это приводит к сбою Apache.