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

问题描述 投票:0回答:1

我们在linux上的.net core 2.1上运行了一个应用程序。当我们对此应用程序应用加载(特定API的5个并发请求,仅在5次点击后)它会挂起,这意味着api不再响应任何请求。进入Linux框并运行后:

netstat -anp --tcp

我可以看到几个CLOSE_WAIT连接。

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

我们试图在Windows中本地重现,但它不会发生。

任何人都经历过泄漏插座的这种行为我认为问题是什么?

asp.net .net linux sockets nginx
1个回答
1
投票

您可以调整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  
© www.soinside.com 2019 - 2024. All rights reserved.