Welcome! Log In Create A New Profile

Advanced

Re: Соединение с Upstream занимает 1 секунду.

Maxim Dounin
November 17, 2017 09:20AM
Hello!

On Fri, Nov 17, 2017 at 07:50:30AM -0500, KycKyc wrote:

> Здравствуйте, столкнулся со следующей проблемой.
> Связка nginx + uwsgi, на продакшн сервере соединение с
> upstream($upstream_connect_time) занимает 1 секунду (+-3ms), бывает раз в
> 20-30 запросов проскакивает запрос с временем соединения в 0 сек,
> промежуточных значений замечено небыло.
> Запросы логируются только с 1го IP.
> Upstream обслуживает http API.
>
> Статика отдается моментально.
> Соединение с websocket upstream (тоже uwsgi) сервером занимает 0 секунд.
>
> Так же, в системном журнале никаких предупреждений нет.
>
> В чем может быть проблема ?
>
> nginx.conf:
> https://pastebin.com/WipnHPkd
>
> Конфиг сервера:
> https://pastebin.com/bfVCxP78
>
> Текущий stub_status:
> Active connections: 19993
> server accepts handled requests
> 359071 359071 1362273
> Reading: 0 Writing: 10343 Waiting: 9639
>
>
> Для примера залогировал один запрос.
>
> Nginx debug log:
> https://pastebin.com/sN30E6Ye
>
> tcpdump:
> https://imgur.com/a/ntC4h

Если верить дампу, то между установлением соединения прошло меньше
1 миллисекунды. Если верить логу - больше 1 секунды. При этом
ip-адреса в дампе и в логе - не совпадают.

Я тут вижу два варианта:

- либо дамп не от того запроса,

- либо дамп не полный и за секунду до этого был ещё один
SYN-пакет, который почему-то в дамп не попал.

Вообще, судя по описанным симптомам - проблему надо искать на
стороне бэкенда, скорее всего он просто перегружен и не успевает
отвечать на запросы. В результате первый SYN он просто игнорирует
из-за переполнения очереди соединений (ибо Linux, и
net.ipv4.tcp_abort_on_overflow по умолчанию 0), соединение
устанавливается только после повторной отправки SYN'а - и вот она, 1
секунда задержки на любой коннект к перегруженному бэкенду.

Так что рекомендация простая: смотреть внимательно на бэкенд, в
частности - на его listen queue ("ss -nlt" в помощь). Ну и дальше
решать проблему с загрузкой бэкенда.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Соединение с Upstream занимает 1 секунду.

KycKyc November 17, 2017 07:50AM

Re: Соединение с Upstream занимает 1 секунду.

Maxim Dounin November 17, 2017 09:20AM

Re: Соединение с Upstream занимает 1 секунду.

KycKyc November 20, 2017 05:18AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 281
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready