Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequests变慢或超时_C#_Windows_Multithreading_Networking - Fatal编程技术网

C# HttpWebRequests变慢或超时

C# HttpWebRequests变慢或超时,c#,windows,multithreading,networking,C#,Windows,Multithreading,Networking,导言 我正在制作一个应用程序,为代理IP/端口抓取文件/网站。实现是完全异步的,以使其以我想要的速度流动。应用程序的全部目的是查找“活动”的代理 为了检查代理是否处于活动状态,我向一个特定的网站发出HttpWebRequest,如果成功,它将处于活动状态,如果不成功,则将处于死亡状态 问题 例如: 首次运行: 使用30k代理对文本文件进行爬网 对每个代理执行HttpWebRequest,以检查它是否处于“活动”状态 找到30个活着的代理 第二轮: 使用30k代理对同一文本文件进行爬网 对每个代理

导言

我正在制作一个应用程序,为代理IP/端口抓取文件/网站。实现是完全异步的,以使其以我想要的速度流动。应用程序的全部目的是查找“活动”的代理

为了检查代理是否处于活动状态,我向一个特定的网站发出
HttpWebRequest
,如果成功,它将处于活动状态,如果不成功,则将处于死亡状态

问题

例如:

首次运行:

  • 使用30k代理对文本文件进行爬网
  • 对每个代理执行
    HttpWebRequest
    ,以检查它是否处于“活动”状态
  • 找到30个活着的代理
  • 第二轮:

  • 使用30k代理对同一文本文件进行爬网
  • 对每个代理执行
    HttpWebRequest
    ,以检查它是否处于“活动”状态
  • 查找0个处于活动状态的代理
  • 如果我等待大约10分钟,那么第二次运行将产生约30个还活着的代理。否则它只会在他们身上超时,并将他们标记为死亡

    正如您可能已经了解到的,我的问题是为什么第二次运行不会产生与第一次运行相同或接近的结果

    我改变了以下几点:

    ServicePointManager.DefaultConnectionLimit=int.MaxValue
    ServicePointManager.MaxServicePoints=int.MaxValue


    这是我的网络的一个基本限制,还是有其他原因?

    您是否确保关闭了第一个web请求?

    如果您使用第三/第四/第五个/。。。要求该问题是否修复了自身恶化为手/端口异常的问题?所有web请求等都是使用dispose模式完成的。-在这种情况下,第一次运行和第二次运行是指打开一个控制台应用程序,关闭它,然后再次打开它。在行为重置之前需要多长时间?您可能会因套接字超时而出错。如果在您的请求上设置了“保持活动”标志?我无法测量准确的时间,但大约10分钟-它再次起作用。没有。。主要是因为我不知道要改变什么。我的第一个建议是换一个路由器/关闭防火墙。它可能会让你闭门造车。也许可以试试DMZ主机。听起来很像是系统问题。您是否已尝试显式关闭web请求的套接字?我不喜欢依赖于这些东西的处理模式。请参阅:处理读取器和流时的不一致性。