Tengo una aplicación que araña sitios web para obtener información. Parece que después de 20-45 minutos de crear HttpWebRequests, un grupo de ellos devuelve los tiempos de espera. Una cosa que hacemos es adjuntar una función anónima de BindIPDelegate
para darle a la solicitud una dirección IP específica, ya que hacemos robin a través de aproximadamente 150 direcciones IP.Después de hacer HttpWebRequests por un tiempo, el resultado comienza el tiempo de espera
Soy la creación del objeto HttpWebRequest
con los siguientes valores ..
- Configuración User-Agent
- Configuración Keep-Alive en false para que no se vuelve a utilizar el IP
- Ajuste de tiempo de espera a 60000 (60 segundos)
- Marco ReadWriteTimeout a 60.000 (60 segundos)
- ajuste de proxy a null
- Setti ng Aceptar para /
- Configuración CookieContainer de nuevo CookieContainer
- Configuración Piplined a cierto
- Ajuste automático de descompresión para desinflar & GZIP
La aplicación está utilizando .NET 4.0 y se ejecuta en Windows Server 2008 R2.
Esto definitivamente parece algo relacionado con la aplicación/TCP/.NET porque si reinicio la aplicación, corre bien de nuevo. También parece más o menos como que los tiempos de espera se colapsan esperando en un puerto local o algo así.
¿Alguna idea?
¿Estás haciendo una llamada de llamada asincrónica o esperando una llamada? – WeNeedAnswers
Llamadas de bloqueo síncronas. –
prueba las llamadas de regreso asincrónicas. Puede que no resuelva su problema pero solucionan el dolor de cabeza de los hilos al usar httpWebRequest. Diría que tiene algo que ver con el grupo de temas, pero sin mirar tu código no podría decirlo con certeza. Nunca duele hacer llamadas de retorno asincrónicas en lugar de disparar hilos. ¿Estás usando el grupo de temas? – WeNeedAnswers