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