Я мог найти 437 SYNs to LISTEN sockets dropped
из netstat -s
с сервера на моем сервере, на котором работает nginx.
Я нашел это объяснение на странице руководства: --statistics, -s, Display summary statistics for each protocol.
Тогда что это значит 437
в смысле, это снимок или суммарный счет за некоторый период времени?
Большое спасибо.
Nginx принимает соединения очень быстро, но в ситуациях с чрезвычайно высоким трафиком задержка соединения все еще может произойти на системном уровне (что является явным узким местом для обработки соединений на уровне приложения). Когда это происходит, новые соединения будут отклонены.
«SYNs to LISTEN сокеты сброшены» - это признак того, что ваш Nginx отбрасывает пакеты. Я советую сначала отслеживать активные соединения Nginx, используя ngx_http_stub_status_module
[1]. Затем определите текущие общесистемные дескрипторы открытых файлов и соответствующим образом настройте параметры ядра.
Размер очереди подключений можно увеличить, изменив somaxconn
и tcp_max_syn_backlog
переменные ядра. Пожалуйста, обратитесь к этим ценным ресурсам [2] [3] для получения дополнительной информации.
[1] https://nginx.org/en/docs/http/ngx_http_stub_status_module.html
[2] http://engineering.chartbeat.com/2014/01/02/part-1-lessons-learned-tuning-tcp-and-nginx-in-ec2/
[3] https://www.scalyr.com/community/guides/how-to-monitor-nginx-the-essential-guide
Обычно значения по умолчанию для wmem и rmem составляют 212992 байта. Видимо не хватает на загруженном сервере. Поднял до 8МБ и проблема исчезла.
sysctl -w net.core.wmem_default=8388608
sysctl -w net.core.rmem_default=8388608