我们在linux上的.net core 2.1上运行了一个应用程序。当我们对此应用程序应用加载(特定API的5个并发请求,仅在5次点击后)它会挂起,这意味着api不再响应任何请求。进入Linux框并运行后:
netstat -anp --tcp
我可以看到几个CLOSE_WAIT连接。
如果我运行“良好的负载”(不同的api调用,更高的速率和更高的并发性几分钟),这种行为不会发生。因为我没有在CLOSE_WAIT状态中看到任何连接。
我们试图在Windows中本地重现,但它不会发生。
任何人都经历过泄漏插座的这种行为我认为问题是什么?
您可以调整Tcp Wait Delay的时间。
在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