У меня есть сайт с очень низким трафиком, работающий на nginx, с 4 рабочими, 1024 соединениями каждый.
Каждые несколько часов я начинаю видеть в журнале ошибок «1024 worker_connections недостаточно», и мой сайт замедляется / становится нестабильным. Перезапуск nginx полностью решает проблему в течение следующих нескольких часов.
Очевидно, что происходит что-то странное, я не могу обслуживать одновременных пользователей 4k своего приложения.
Есть ли способ, кроме просмотра журнала доступа (который выглядит нормально), более детально, что делает nginx?
Есть ли какая-нибудь пресловутая комбинация конфигурации, которая может привести к тому, что старые соединения останутся открытыми, а не закрытыми?
Спасибо.
редактировать это выглядит не так
# lsof |grep nginx |grep CLOSE_WAIT |wc -l
1271
Без прокси / обратного прокси
max_clients = worker_processes * worker_connections
С обратным прокси
max_clients = (worker_processes * worker_connections ) / (X * 2)
2 потому что вы открываете соединение с тем, что вы проксируете
X - это, однако, много одновременных подключений, которые эти клиенты делают с вами
Чтобы увидеть, какие соединения висят вокруг, вы можете запустить lsof -i :PORT
. Он покажет все соединения, открытые для nginx, и их состояние.