Я пишу приложение для измерения скорости загрузки веб-страниц с помощью С#. Я предоставляю список уникальных доменных имен, затем создаю X потоков и выполняю HTTPWebRequests до тех пор, пока список доменов не будет использован. Проблема в том, что независимо от того, сколько потоков я использую, я получаю только около 3 страниц в секунду.
Я обнаружил, что System.Net.ServicePointManager.DefaultConnectionLimit равен 2, но у меня сложилось впечатление, что это связано с количеством подключений на домен. Поскольку каждый домен в списке уникален, это не должно быть проблемой.
Затем я обнаружил, что метод GetResponse() блокирует доступ для всех других процессов до закрытия WebResponse: http://www.codeproject.com/KB/IP/Crawler.aspx#WebRequest, я не нашел никакой другой информации в Интернете, подтверждающей это утверждение, однако я реализовал HTTP-запрос с использованием сокетов. , и я заметил значительное ускорение (с 4x до 6x).
Итак, мои вопросы: кто-нибудь точно знает, как работают объекты HttpWebRequest? Есть ли обходной путь помимо того, что было упомянуто выше? Или есть ли где-нибудь примеры высокоскоростных поисковых роботов, написанных на C#?