मैं यह मापने के लिए एक आवेदन लिख रहा हूं कि मैं सी # का उपयोग करके वेब पेज कितनी तेजी से डाउनलोड कर सकता हूं। मैं अद्वितीय डोमेन नामों की एक सूची प्रदान करता हूं, फिर मैं थ्रेड की एक्स संख्या उत्पन्न करता हूं और डोमेन की सूची का उपभोग होने तक HTTPWebRequests निष्पादित करता हूं। समस्या यह है कि इससे कोई फर्क नहीं पड़ता कि मैं कितने धागे का उपयोग करता हूं, मुझे प्रति सेकंड लगभग 3 पृष्ठ मिलते हैं।HttpWebRequest पर Concurrency सीमा
मैंने पाया कि System.Net.ServicePointManager.DefaultConnectionLimit 2 है, लेकिन मैं इस धारणा के तहत था कि यह प्रति डोमेन कनेक्शन की संख्या से संबंधित है। चूंकि सूची में प्रत्येक डोमेन अद्वितीय है, यह कोई मुद्दा नहीं होना चाहिए।
तब मुझे पता चला कि GetResponse() विधि WebResponse बंद होने तक अन्य सभी प्रक्रियाओं से पहुंच को अवरुद्ध करती है: http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest, मुझे इस दावे को वापस करने के लिए वेब पर कोई अन्य जानकारी नहीं मिली है, हालांकि मैंने एक HTTP अनुरोध लागू किया है सॉकेट, और मैंने एक महत्वपूर्ण गति (4x से 6x) देखा।
तो मेरे प्रश्न: क्या कोई जानता है कि HttpWebRequest ऑब्जेक्ट्स कैसे काम करता है ?, क्या ऊपर वर्णित किए गए अलावा कोई कामकाज है ?, या सी # कहीं भी लिखे गए उच्च गति वाले वेब क्रॉलर के कोई उदाहरण हैं?
आप प्रति डोमेन कनेक्शन सीमा को कॉन्फ़िगर कर सकते हैं, लेकिन डिफ़ॉल्ट रूप से कनेक्शन सीमा वैश्विक है। https://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx – Todd