Обратный прокси-сервер Nginx работает очень медленно

#nginx #reverse-proxy #tornado #nginx-reverse-proxy

#nginx #обратный прокси #торнадо #nginx-reverse-proxy

Вопрос:

у меня возникли проблемы с nginx в качестве обратного прокси-сервера для экземпляров tornado (сервер python).

У нас есть 3 сервера (циклический перебор dns) с одинаковой конфигурацией, и проблема возникает только на одном, несколько раз в день. Это кажется случайным.

Проблема заключается в очень медленном времени отклика (от 2,3 с до 2 минут!) на запросы о передаче через прокси. Большинство запросов получают ответ в течение одной секунды.

У нас есть задание cron, которое «пингует» этот сервер каждую минуту. Пинги ICMP всегда в порядке, получение статических ресурсов всегда в порядке, но у нас есть 5-50 запросов в день к tornado через nginx, которые действительно медленные. Nginx находится перед 8 экземплярами серверов tornado с базой данных mongo. Каждый сервер nginx получает 100-200 запросов в минуту.

При просмотре журналов приложений время отклика на стороне tornado никогда не превышает одной секунды, проблема, похоже, действительно связана с интерфейсом nginx-tornado.

Мониторинг системы (диска, памяти, процессора) всегда в порядке и использует <30%. На сервере размещены nginx, tornado и mongodb, а также 32 ГБ оперативной памяти с 8 потоками. Под Ubuntu 18LTS.

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

Как я могу продолжить диагностику? Я думаю, что где-то есть скопление / очередь запросов.

некоторая информация:

 # ss -lt
State                          Recv-Q                          Send-Q                                                                Local Address:Port                                                       Peer Address:Port

LISTEN                         0                               128                                                             0.0.0.0:8002                                                            0.0.0.0:*
LISTEN                         0                               128                                                             0.0.0.0:8003                                                            0.0.0.0:*
LISTEN                         0                               128                                                             0.0.0.0:8004                                                            0.0.0.0:*
LISTEN                         0                               128                                                             0.0.0.0:8005                                                            0.0.0.0:*
LISTEN                         0                               128                                                             0.0.0.0:8006                                                            0.0.0.0:*
LISTEN                         0                               128                                                             0.0.0.0:8007                                                            0.0.0.0:*
....

~# netstat -s | grep -i LISTEN
2129596 times the listen queue of a socket overflowed
2138743 SYNs to LISTEN sockets dropped
  

И с каждым днем их количество увеличивается.

Есть какие-нибудь идеи о том, в чем проблема и как ее решить? Спасибо!!

введите описание изображения здесь

Комментарии:

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