.net核心应用程序套接字在负载下泄漏



我们有一个应用程序在linux的.net内核2.1上运行。当我们将负载应用于此应用程序时(5个特定API的并发请求,仅在5次命中后(,它将挂起,这意味着API不再响应任何请求。进入Linux盒子并运行之后:

netstat -anp --tcp

我可以看到几个CLOSED_WAIT连接。

如果我运行"良好负载"(不同的api调用,几分钟内更高的速率和更高的并发性(,这种行为就不会发生。因为我没有看到任何处于CLOSE_WAIT状态的连接。

我们试图在windows中进行本地复制,但没有成功。

有谁经历过这种套接字泄漏的行为,我想问题是什么?

您可以调整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  

最新更新