0

我的问题有点复杂,我不知道如何最好地解释它

我有一个 125k 的公共代理列表。你也可以猜到,大部分都是无效的

我想快速测试所有这些

所以我编写了一个应用程序,它通过以下方式产生 250 个并发获取任务Parallel.ForEach

所以我不断地通过 250 个不同的代理获取相同的页面,看看它们是否有效

每个任务使用其中一个代理并获取相同的页面并查看源代码

源代码是否有效,返回true或false

我已将每个主机允许的最大并发连接数设置为 1k

ServicePointManager.DefaultConnectionLimit = 1000;
//This sets to maximum number of concurrent connections to same host

因此,在开始获取几分钟后,我无法通过我的网络浏览器连接任何页面。它在下面的栏中显示为解析主机。

我不确定如何调试确切的问题是什么?

我怀疑DNS解析以某种方式被破坏了。或者发生其他一些错误。欢迎任何想法

我的工作环境是: c# .NET 4.6.2, Windows 8.1, 25 MBs 光纤连接

我正在使用以下获取功能

public static cs_HttpFetchResults func_fetch_Page(string srUrl, int irTimeOut = 60, 
string srRequestUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0", 
string srProxy = null, 
int irCustomEncoding = 0, 
bool blAutoDecode = true, bool blKeepAlive = true) {
        cs_HttpFetchResults mycs_HttpFetchResults = new cs_HttpFetchResults();
        mycs_HttpFetchResults.srFetchingFinalURL = srUrl;

        try {
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(srUrl);
            request.CookieContainer = new System.Net.CookieContainer();

            if (srProxy != null) {
                string srProxyHost = srProxy.Split(':')[0];
                int irProxyPort = Int32.Parse(srProxy.Split(':')[1]);
                System.Net.WebProxy my_awesomeproxy = new WebProxy(srProxyHost, irProxyPort);
                my_awesomeproxy.Credentials = new NetworkCredential();
                request.Proxy = my_awesomeproxy;
            }
            else {
                request.Proxy = null;
            }

            request.Timeout = irTimeOut * 1000;
            request.UserAgent = srRequestUserAgent;
            request.KeepAlive = blKeepAlive;
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";

            WebHeaderCollection myWebHeaderCollection = request.Headers;
            myWebHeaderCollection.Add("Accept-Language", "en-gb,en;q=0.5");
            myWebHeaderCollection.Add("Accept-Encoding", "gzip, deflate");

            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

            using(WebResponse response = request.GetResponse()) {
                using(Stream strumien = response.GetResponseStream()) {

                    Encoding myEncoding = Encoding.UTF8;

                    using(StreamReader sr = new StreamReader(strumien, myEncoding)) {
                        mycs_HttpFetchResults.srFetchBody = sr.ReadToEnd();
                        mycs_HttpFetchResults.blResultSuccess = true;
                    }
                }
            }
        }
        catch {

    }

        return mycs_HttpFetchResults;
    }

过了一会儿,我注意到服务主机本地系统在内存使用方面变得更大

在此处输入图像描述

4

0 回答 0