C# HttpWebRequests变慢或超时
导言 我正在制作一个应用程序,为代理IP/端口抓取文件/网站。实现是完全异步的,以使其以我想要的速度流动。应用程序的全部目的是查找“活动”的代理 为了检查代理是否处于活动状态,我向一个特定的网站发出C# HttpWebRequests变慢或超时,c#,windows,multithreading,networking,C#,Windows,Multithreading,Networking,导言 我正在制作一个应用程序,为代理IP/端口抓取文件/网站。实现是完全异步的,以使其以我想要的速度流动。应用程序的全部目的是查找“活动”的代理 为了检查代理是否处于活动状态,我向一个特定的网站发出HttpWebRequest,如果成功,它将处于活动状态,如果不成功,则将处于死亡状态 问题 例如: 首次运行: 使用30k代理对文本文件进行爬网 对每个代理执行HttpWebRequest,以检查它是否处于“活动”状态 找到30个活着的代理 第二轮: 使用30k代理对同一文本文件进行爬网 对每个代理
HttpWebRequest
,如果成功,它将处于活动状态,如果不成功,则将处于死亡状态
问题
例如:
首次运行:
HttpWebRequest
,以检查它是否处于“活动”状态HttpWebRequest
,以检查它是否处于“活动”状态ServicePointManager.DefaultConnectionLimit=int.MaxValue
和ServicePointManager.MaxServicePoints=int.MaxValue
这是我的网络的一个基本限制,还是有其他原因?您是否确保关闭了第一个web请求?如果您使用第三/第四/第五个/。。。要求该问题是否修复了自身恶化为手/端口异常的问题?所有web请求等都是使用dispose模式完成的。-在这种情况下,第一次运行和第二次运行是指打开一个控制台应用程序,关闭它,然后再次打开它。在行为重置之前需要多长时间?您可能会因套接字超时而出错。如果在您的请求上设置了“保持活动”标志?我无法测量准确的时间,但大约10分钟-它再次起作用。没有。。主要是因为我不知道要改变什么。我的第一个建议是换一个路由器/关闭防火墙。它可能会让你闭门造车。也许可以试试DMZ主机。听起来很像是系统问题。您是否已尝试显式关闭web请求的套接字?我不喜欢依赖于这些东西的处理模式。请参阅:处理读取器和流时的不一致性。