У меня есть приложение, которое пауков веб-сайтов для информации. Кажется, что после 20-45 минут создания HttpWebRequests куча из них возвращает таймауты. Одна вещь, которую мы делаем, это прикрепляем анонимную функцию BindIPDelegate
, чтобы назначить запросу конкретный IP, так как мы проходим около 150 IP.
Я настраиваю объект HttpWebRequest
со следующими настройками ..
- Настройка User-Agent
- Установка для Keep-Alive значения false, чтобы IP-адрес не использовался повторно
- Настройка времени на 60000 (60 секунд)
- Установка ReadWriteTimeout на 60000 (60 секунд)
- Установка прокси в ноль
- Настройка Принять к /
- Настройка CookieContainer для нового CookieContainer
- Настройка Piplined на true
- Настройка автоматической декомпрессии для Deflate & GZIP
Приложение использует .NET 4.0 и работает на Windows Server 2008 R2.
Это определенно кажется чем-то связанным с приложением / TCP / .NET, потому что, если я перезапущу приложение, оно снова будет работать нормально. Кроме того, кажется, более или менее похоже, что те, кто отключился, просто стоят в очереди, ожидая на локальном порту или что-то в этом роде.
Есть идеи?