Столкновение с проблемой на производственном сервере под управлением debian (7.0) с кластером nodejs (v0.10.x), где он не закрывается некоторые TCP-соединения с клиентами.
Это приводит к разрыву соединения при достижении лимита соединения.
С помощью ss -s
инструмент Я могу отслеживать, что некоторые соединения закрываются через некоторое время, а некоторые нет.
Здесь sysctrl
Изменения конфигурации, которые я использую, чтобы увеличить максимальное количество подключений в качестве временного решения:
net.ipv4.ip_local_port_range = 1024 65500
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 16384 33554432
net.ipv4.tcp_wmem = 4096 16384 33554432
net.ipv4.tcp_mem = 786432 1048576 26777216
net.core.netdev_max_backlog = 2000
Как найти узкое место и решить проблему?
Проблема заключалась в том, что https
сервер не наследует логику тайм-аута сокетов от http
сервер.
Eсть патч объединен с апреля 2013 г., но до сих пор не объединен в стабильный 0.10
филиал.
Решения:
https
использование, используйте какой-нибудь прокси-сервер (nginx);0.10
.