我们正在使用 Windows 服务对内部 REST 服务进行非常频繁的 HTTP 调用(每秒 20-40 次调用),但注意到在服务运行几分钟后获取响应有很长的延迟。
查看 netstat,有相当多的端口处于“TIME_WAIT”状态,看来我们的端口可能用完了。
我们如何确保端口被重用?
最佳答案
同时传出的 HTTP 连接数有限制。您可以在创建 HttpWebRequest
对象之前使用 System.Net.ServicePointManager.DefaultConnectionLimit
静态属性来控制它
将此值设置为比我认为的默认值 2 更高的值可能是值得的。
如果这没有帮助,那么您还可以增加默认的 ThreadPool
大小,以允许您更快地创建更多请求。线程池只会逐渐增加线程数量——每半秒一个新线程,IIRC
关于c# - HttpWebRequest 端口耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33632256/