Назад | Перейти на главную страницу

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 stdout при чтении заголовка ответа от восходящего потока, клиент: 94.228.34.203, сервер: sau.com.au, запрос: "GET / форумы / topic / 437438-around-the-bay-wrap-up / HTTP / 1.1 ", восходящий поток:" 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 приходит на помощь. Нет твердого понимания причины или истинного решения, но для меня этого достаточно.

Я бы посмотрел, где может произойти сбой, используя 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 для получения подробной информации об этих параметрах конфигурации, а также о других.