вышестоящий сервер nginx "вне портов" - PullRequest
0 голосов
/ 27 апреля 2011

Я использую nginx в качестве обратного прокси-сервера и нахожу более 30 тыс. Портов состояния TIME_WAIT на вышестоящем сервере (windows 2003).Я знаю, что на моих серверах "нет портов", которые обсуждались здесь (http://nginx.org/pipermail/nginx/2009-April/011255.html),, и они настроили и nginx, и вышестоящий сервер на повторное использование TIME_WAIT и более быструю перезагрузку.

[sysctl -p]
……
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

Но nginx зависает и "истекло время ожидания соединения, в то время как соединение с вышестоящим сервером "ошибка все еще может быть найдена в журнале ошибок nginx, когда RPS восходящего потока выше 1000 в течение 1 минуты. Когда восходящий поток - Windows, сервер будет" вне портов "в секундах.

Есть идеи? Пул соединений с ожидающей очередью? Максим Дунин написал полезный модуль для поддержания связи с memcached, но почему он не может поддерживать веб-сервер?

1 Ответ

0 голосов
/ 29 марта 2012

Я новичок в nginx, но, насколько я знаю, вам нужно уменьшить значение net.ipv4.tcp_fin_timeout, которое по умолчанию составляет 60 секунд.Из коробки nginx не поддерживает пул http-соединений с бэкэндом.Из-за этого каждый запрос к бэкэнду создает новое соединение.При использовании портов 64K и 60 секунд ожидания, прежде чем этот порт можно будет использовать повторно, среднее число запросов в секунду не будет превышать 1 Кбит / с.Вы можете либо уменьшить значение net.ipv4.tcp_fin_timeout как на сервере nginx, так и на внутреннем сервере, либо можете назначить несколько адресов ip для внутреннего блока и настроить nginx для обработки этих «одних и тех же серверов» как разных серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...