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

Комбинация Nginx Tornado вызывает 502 ошибки неверного шлюза

Мы столкнулись с проблемой непоследовательных ошибок 502, и поиск причин оказался очень неприятным занятием. Мы можем воспроизвести проблему, быстро отправив несколько одновременных запросов. Проблема в том, что несколько значений находятся в диапазоне от 10 до 20 в течение 5 секунд (это не опечатка). Очевидно, что с этим типом груза нужно легко справляться.

Нам очень нравится подход Nginx + Tornado, но мы рассматриваем возможность перехода к более традиционному (например, многопоточному) подходу, потому что эту проблему было очень сложно решить. Мне было интересно, а) знаете ли вы, как решить эту проблему и б) как мы можем отследить виновника (-ов).

Файлы журнала просто указывают на отказ в соединении. У нас та же проблема, что и в этом посте: https://stackoverflow.com/questions/2962439/how-do-i-debug-a-http-502-error

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

Заранее спасибо,

Павел

По умолчанию nginx не настроен на повторные попытки подключения к другому восходящему потоку, если один из них отправляет обратно ошибку 502. Вам в основном нужно добавить это:

proxy_next_upstream error timeout http_502;

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

http://forum.nginx.org/read.php?2,152071,152212

Вот более подробная информация о директиве конфигурации:

http://wiki.nginx.org/HttpProxyModule#proxy_next_upstream