Tiempos de espera de conexión intermitentes al servidor Solr utilizando SolrNet
(2)
Intenta configurar esto en .net.
ServicePointManager.Expect100Continue = false;
o esto
ServicePointManager.SetTcpKeepAlive(true, 200000, 200000);
- esto envía solicitudes al servidor para mantener la conexión activa.
Tengo un servidor web de producción que aloja una búsqueda, y otra máquina que aloja el servidor de búsqueda Solr (en una subred que está en la misma sala, por lo que no hay problemas de red). Todo está bien> 90% de las veces, pero siempre obtengo un pequeño número de veces. The operation has timed out
errores de The operation has timed out
.
Aumenté el tiempo de espera en SolrNet init a 30 segundos (!)
SolrNet.Startup.Init<SolrDataObject>(
new SolrNet.Impl.SolrConnection(
System.Configuration.ConfigurationManager.AppSettings["URL"]
) {Timeout = 30000}
);
... pero todo lo que sucedió es que comencé a recibir este mensaje en lugar de Unable to connect to the remote server
que estaba viendo antes. Parece que no ha habido diferencia en la cantidad de errores de tiempo de espera.
No veo nada en ningún registro (¡créanme que lo he visto!) Y claramente mi configuración es correcta porque funciona la mayor parte del tiempo. ¿Alguien tiene alguna idea de cómo puedo encontrar más información sobre este problema?
EDITAR:
Ahora he aumentado el número de conexiones HttpRequest de 2 a ''un gran número'' (veo hasta 10 conexiones), pero esto no ha tenido un efecto discernible en este problema.
El firewall está configurado para permitir CUALQUIER conexión entre las dos máquinas.
También verificamos el hardware con nuestro servidor host y no hay problemas en las conexiones, según ellos.
EDICION 2:
Todavía estamos viendo este problema.
Ahora estamos registrando los tiempos de espera y en su mayoría tienen poco más de 30 segundos, que es el tiempo de espera de la capa SolrNet; algunos son de 20 años, sin embargo, que es el período de tiempo de espera predeterminado de Tomcat, lo que sugiere que es algo en la conexión real entre las máquinas.
Sin embargo, no estamos seguros de dónde ir desde aquí: están en una VLAN y estamos usando específicamente la dirección VLAN. El tiempo de respuesta de pings es SIEMPRE <1 ms.
Sin más información, solo puedo adivinar algunas posibles razones:
- Está obteniendo toneladas de documentos por consulta y agota el tiempo de transferencia de datos.
- Estás llegando al ServicePoint.ConnectionLimit . Si es así, simplemente aumente este valor. Consulte también ¿Cómo puedo eliminar mediante programación el límite de 2 conexiones en WebClient?
- Tiene algunas solicitudes muy complejas o que hace un uso indebido de Solr (p. Ej., No utiliza consultas de filtro). Verifique el qtime en la respuesta. Consulte la wiki de rendimiento de Solr para más detalles.