2010-06-02 4 views
1

У меня есть сервер Python Tornado, сидящий за интерфейсом nginx. Время от времени, но не каждый раз, я получаю ошибку 502. Я смотрю в журнал Nginx доступа и я вижу это:Как отладить ошибку HTTP 502?

127.0.0.1 - - [02/Jun/2010:18:04:02 -0400] "POST /a/question/updates HTTP/1.1" 502 173 "http://localhost/tagged/python" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" 

и в журнале ошибок:

2010/06/02 18:04:02 [error] 14033#0: *1700 connect() failed (111: Connection refused) 
while connecting to upstream, client: 127.0.0.1, server: _, 
request: "POST /a/question/updates HTTP/1.1", 
upstream: "http://127.0.0.1:8888/a/question/updates", host: "localhost", referrer: "http://localhost/tagged/python" 

Я не думаю, что какие-либо ошибки появляются в журнале Tornado. Как вы собираетесь отлаживать это? Есть ли что-то, что я могу добавить в конфигурацию Tornado или nginx, чтобы помочь отладить это?

+0

Большинство обнаружит, что это результат, когда nginx не смог проверить заголовки восходящего потока (201 с контентом) или было зарегистрировано так много ошибок (уведомлений), что он разбивает буфер ошибок 4k. – ppostma1

ответ

2

Строка из журнала ошибок очень информативна, на мой взгляд. В нем говорится, что соединение было отклонено восходящим потоком, оно содержит клиентский IP-адрес, конфигурацию сервера Nginx, строку запроса, имя хоста, URL-адрес вверху и источник ссылок.

Довольно ясно, что вы должны посмотреть на восходящий (или межсетевой экран), чтобы узнать причину.

Если вы хотите посмотреть, как Nginx обрабатывает запрос, почему он выбирает определенные разделы сервера и местоположения - есть красивый режим «отладки». (Обратите внимание: ваш двоичный файл Nginx должен быть построен с включенными отладочными символами). Затем:

error_log /path/to/your/error.log debug; 

включит отладку для всех запросов. Отладка информации в журнале ошибок требует некоторого времени, чтобы привыкнуть к ее интерпретации, но это стоит усилий.

Не используйте это «как есть» для сайтов с высоким трафиком! Он генерирует много информации, и ваш журнал ошибок будет расти очень быстро. Если вам необходимо для отладки запросов в производстве, используйте debug_connection директиву:

events { 
    debug_connection 1.2.3.4; 
} 

Оказывается отладка для конкретного IP-адреса только клиента.

Смежные вопросы