2013-04-13 2 views
0

ВведениеHttpWebRequests замедление или время из

Я делаю приложение, которое сканирует файлы/сайты для прокси-IP/портов. Реализация носит чисто асинхронный характер, чтобы заставить его течь со скоростью, которую я хочу. Вся цель приложения - найти прокси-серверы, которые «живы».

Чтобы проверить, жив ли прокси, я делаю HttpWebRequest на конкретный веб-сайт, и в случае успеха он жив, если не мертв.

Проблема

Пример:

Первый запуск:

  1. Сканирование текстового файла с 30k прокси.
  2. Делает HttpWebRequest с каждым прокси-сервером, чтобы проверить, жив ли он.
  3. Находит 30 прокси, которые живы.

Второй запуск:

  1. Сканирований тот же текстовый файл с 30k прокси.
  2. Делает HttpWebRequest с каждым прокси-сервером, чтобы проверить, жив ли он.
  3. Находит 0 прокси, которые являются живыми.

Если я подожду около 10 минут, то второй прогон произведет ~ 30 прокси, которые тоже живы. Иначе он просто набросится на них и отметит их как мертвых.

Как вы, наверное, уже выяснили, мой вопрос в том, почему второй запуск не дает того же или близкого к результату первого запуска.

Я изменил следующее:

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

Это основное ограничение моей сети, или что-то еще играет в?

+0

Каковы результаты, если вы используете запрос 3/4/5/...? Устраняет ли проблема ухудшение в случае исключения вручную/порта? – Gusdor

ответ

0

Вы заверили, что закрываете первый веб-запрос?

+0

Все веб-запросы и т. Д. Выполняются с использованием шаблона удаления. - Также первый запуск и второй запуск в этом случае относятся к открытию консольного приложения, закрытию его и повторному открытию. – ebb

+0

Как долго это происходит, пока поведение не сбрасывается? Возможно, вы теряете таймаут сокета. Если в ваших запросах установлен флаг «keep alive»? – Gusdor

+0

Я не смог измерить точное время, но около 10 минут - и он снова работает. – ebb

Смежные вопросы