在C#中,WebRequest方法和WebClient方法,在多线程时,对并发请求数量有一个默认限制,这个限制与操作系统相关,在Windows XP/Windows 7等PC系统上默认为2个,而在Windows 2008等服务器系统中,默认为10个,也就是说在出现高并发的环境中,使用WebRequest方法来进行POST或GET请求时,最多只能同时发送10个,剩下的都在排队。出现这个问题的原因是,在HTTP 1.0和HTTP 1.1规定最大连接数就是2,就一直延用到现在。
解决方法:
在程序中设置:
System.Net.ServicePointManager.DefaultConnectionLimit = 512; //建议最高不要超过1024,具体看使用环境是否需要
或者在配置中设置:
<configuration>
<system.net>
<connectionManagement>
<add address = "http://www.google.com" maxconnection = "512" ></add>
<add address = "*" maxconnection = "512" ></add>
</connectionManagement>
</system.net>
</configuration>
以上。
本文作者:老徐
本文链接:https://bigger.ee/archives/31.html
转载时须注明出处及本声明