Назад | Перейти на главную страницу

Как я могу наблюдать, что делает nginx? (для решения: «1024 worker_connections недостаточно»)

У меня есть сайт с очень низким трафиком, работающий на 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, и их состояние.