502 ошибки на случайных (не всех) страницах
Несколько недель назад я заметил в инструментах Google для веб-мастеров, что некоторые из моих URL возвращали 502.
Одним из таких URL является http://www.sau.com.au/forums/topic/437438-around-the-bay-wrap-up/
Этот URL возвращает 502 для любого скина рабочего стола, но отлично работает, когда на мобильном (другой скин)
Обратите внимание, что он возвращает 502 очень быстро, что говорит мне о том, что это не исполнение или не какая-то форма тайм-аута.
Помимо нескольких подобных, все остальные URL на сайте в порядке.
Единственная запись в журнале, которая может помочь вообще, это эта;
2015/06/29 09:33:39 [ошибка] 19650#0: *4431763 восходящий поток преждевременно закрыл стандартный вывод FastCGI при чтении заголовка ответа из восходящего потока, клиент: 94.228.34.203, сервер: sau.com.au, запрос: "GET /forum / topic / 437438-ru-the-the-bay-wrap-up/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "www.sau.com.au", реферер:" http://www.sau.com.au/forums/forum/100-victoria/"
Я также перезапустил APC, который не помог. Это было только 1,5% фрагментации.
Я не могу найти записи, достигшие предела. Сервер имеет довольно высокую производительность, поэтому у PHP много памяти, размеры запросов, а также большие таймауты.
Я попробовал следующее, о котором я читал, но без различий.
fastcgi_buffer_size 10240k;
fastcgi_buffers 4 10240k;
Я не хочу вносить какие-либо большие изменения, потому что это только на некоторых страницах. Один поток предложил обновить PHP до 5.5.
Я не знаю, где теперь искать дальнейшую помощь. Каким должен быть мой следующий шаг?
Некоторая информация;
nginx version: nginx/1.6.2
PHP 5.3.3 (fpm-fcgi) (built: Oct 30 2014 20:14:56)
ОБНОВЛЕНИЕ 1
В логе ошибок PHP ничего не написано. Регистрация ошибок включена, хотя;
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
ОБНОВЛЕНИЕ 2
dmesg, похоже, не обновляется и отсутствует kernel.log;
-rw-r--r-- 1 root root 41179 Dec 18 2014 dmesg
ПОСТАНОВИЛИ
Я устанавливал XDebug, как предложено @sa289 в этом ответе, и для этого мне нужно было обновить PHP 5.3 до PHP 5.5. Я надеялся, что это решит проблему самостоятельно, но это не так. Итак, я установил XDebug и добавил zend_extension в php.ini, перезапустил PHP и вуаля, 502 исчезли. Я снова прокомментировал расширение Zend, и 502 вернулись. XDebug на помощь. Нет твердого понимания причины или истинного решения, но для меня этого достаточно.
1 ответ
Я бы увидел, где это может произойти сбой с помощью Xdebug. Xdebug можно использовать для выполнения чего-то, называемого трассировкой, где он будет сообщать вам каждую строку кода, которая выполняется, и таким образом вы сможете увидеть последнюю строку кода, которая была выполнена перед сбоем, поэтому она укажет вам правильное направление. Вы можете отслеживать его только тогда, когда установлен определенный файл cookie, поэтому вы не создаете журналы трассировки для каждого запроса. Обратите особое внимание на следующие параметры конфигурации:
xdebug.trace_enable_trigger
xdebug.trace_output_dir
xdebug.collect_params
xdebug.trace_output_name
(Мне нравится "trace.% P.% T", потому что он помещает PID в имя файла, что может быть полезно в некоторых случаях)
См. http://xdebug.org/docs/all_settings для получения подробной информации об этих параметрах конфигурации, а также других.