Почему лагают запросы между frontend (отдельный прокси) и backend (везде nginx)?

Есть проксирующий сервер в OVH (Roubaix RBX7 - France) и сервер приложения в Мюнхене (ДЦ другой компании). На обоих серверах nginx и CentOS. Серверы достаточно мощные, каналы гигабитные, процессоры на прокси не загружены. Обрабатывают они около 1000 запросов в секунду в пике. По вечерам наступают проблемы: некоторые запросы подвисают на 1-5 секунд. Если запрос не идет на backend, то прокси отмечает мгновенно, проблем нет. Если на backend, то какой-то процент запросов начинает подвисать (грубо говоря 1 из 10), хотя основная масса выполняется так же быстро (ответ в браузер приходит где-то за 50 ms). Если зайти через консоль на прокси, то запросы через curl к backend так же лагают. Если зайти через консоль на backend, то запросы через curl (к самому себе) не лагают. Выходит, дело не в nginx. Более того, если делать запросы к backend с других серверов (через curl) тоже лагов нет. Получается проблема либо в системных настройках проксирующего сервера, либо в канале между OVH и backend. Подскажите, куда копать дальше.
На прокси исходящий плюс входящий трафик около 80 мегабит (канал гигабит). В данный момент (не пик) статус nginx.
Прокси:
Active connections: 11605 
server accepts handled requests
 3016792 3016792 36761410 
Reading: 0 Writing: 41 Waiting: 11560

В пике "Active connections" около 18 тысяч (в nginx 8 worker_processes, 2048 worker_connections, но дело не в nginx, curl тоже лагает).

Backend:
Active connections: 14 
server accepts handled requests
 118781210 118781210 118781116 
Reading: 0 Writing: 13 Waiting: 1
  • Вопрос задан
  • 1073 просмотра
Пригласить эксперта
Ответы на вопрос 6
@Badbuka
Проверьте mtu между сетями, пропингуйте полным пакетом, посмотрите нет ли где-то фрагментации.
Ответ написан
alfss
@alfss
Какая задержка между серверами в указанный вами период? Ping, traceroute, etc. Проблема сама по себе обычная, бек и фронт должны быть в одном дц.
Ответ написан
@vitaly_il1
DevOps Consulting
Обрабатывают они около 1000 запросов в секунду в пике. По вечерам наступают проблемы:

А по вечерам больше нагрузка?

каналы гигабитные,

что показывает мониторинг - по траффику и кол-ву пакетов? Можно уткнуться в лимит по кол-во пакетов, если много маленьких.

куда копать дальше.

1) системные логи и логи апликаций
2) статистика NIC-ов
3) на прокси сервере - посмотреть на
sysctl fs.file-nr (https://access.redhat.com/documentation/en-us/red_...
впрочем, если дело в этом, то должны быть ошибки в логах
Ответ написан
xenozauros
@xenozauros
Админю, пишу на питоне, вот это вот все...
Проверьте через mtr/ping потерю пакетов. Вполне вероятно, что скорость хорошая, а пакеты между балансером и приложением пропадают.
В целом, чем у вас больше таких сетевых "ног" тем выше вероятность проблемы на какой из них.
Проще и правильнее сблизить балансер (ваш прокси) и приложение максимально, чтоб избежать таких вот неочевидностей
Ответ написан
@alex005
Ну а бэкенд случайно не php-fpm? Сейчас тоже столкнулся с тем, что в Docker связка nginx+php-fpm (размер проекта более 1000 файлов php) почему-то сильно грузит процессор и response time 2 s, причем если включить кэширование fastcgi, то ответ сразу 20 ms. Склоняюсь к тому, что вообще уйти от nginx+php-fpm и поставить обычный Apache.
Ответ написан
@Hint Автор вопроса
Во что именно упиралось, так и не понял. Но проблема была решена настройкой keepalive между серверами (было 1000 подключений в секунду от front к back, стало где-то 50). Трафик особо не упал, нагрузка на процессоры не снизилась, но задержка при открытии некоторых новых соединений между серверами пропала. Почему именно она возникала - не знаю. Может в том же OVH какие-то лимиты на оборудовании настроены...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 ₽
Sportmaster Lab Москва
от 150 000 до 350 000 ₽
AGIMA Москва
от 180 000 ₽
26 февр. 2020, в 05:15
5000 руб./за проект
26 февр. 2020, в 01:14
600 руб./в час
26 февр. 2020, в 01:13
1500 руб./за проект