утечка сокета приложения ядра .net под нагрузкой - PullRequest
0 голосов
/ 14 декабря 2018

у нас есть приложение, работающее на .net core 2.1 в linux.Когда мы прикладываем нагрузку к этому приложению (5 одновременных запросов определенного API, сразу после 5 попаданий), оно зависает, что означает, что API больше не отвечает ни на один запрос.После входа в окно Linux и запуска:

netstat -anp --tcp

я вижу несколько соединений CLOSED_WAIT.

Если я запускаю "хорошая загрузка" (другой вызов API, вышескорость и более высокий параллелизм в течение нескольких минут) такого поведения не бывает.поскольку я не вижу никакого соединения в состоянии CLOSE_WAIT.

Мы попытались воспроизвести локально в Windows, но этого не произошло.

Любой испытал такое поведение для утечки сокетов, которые я предполагаювопрос есть?

1 Ответ

0 голосов
/ 26 апреля 2019

Вы можете настроить время ожидания Tcp.

В Windows измените regedit \ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpTimedWaitDelay

В Linux измените

net.ipv4.tcp_syn_retries=2  
net.ipv4.tcp_keepalive_time=1200  
net.ipv4.tcp_orphan_retries=3  
net.ipv4.tcp_fin_timeout=30      
net.ipv4.tcp_max_syn_backlog = 4096  
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_tw_reuse = 1  
net.ipv4.tcp_tw_recycle = 1  
net.ipv4.tcp_keepalive_probes=5  
net.core.netdev_max_backlog=3000  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...