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 [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
