Pregunta

Estamos tratando de hacer un servidor API para nuestro proyecto.

Estamos usando MongoDB con Pymongo en Cajas de Debian. Todo está actualizado.

Pero estamos teniendo un problema de conexión realmente extraño. Generalmente hay más de 15k-32k conexiones con el puerto MongoDB cuando verifique con

root@weberver1:/# netstat -na | GREP MONGO_DB_IP | WC -L

Tengo 15363

Las conexiones están en el estado de Time_Wait ...

Pero cuando reviso Mongo, solo veo 5-6 conexiones en este momento ...

Escribimos una clase de MongoDB, que crea una instancia y hace conexión. Intentamos llamar a conn.disconnect () o conn.end_request () cada vez que finaliza la consulta de tiempo, pero no se detiene ese número de conexión de alta conexión ...

¿Hay alguien que pueda decir cuál debería ser mi error, o hay alguna clase de Python escrita para MongoDB para examinar cómo otros hacen, como cosas ...

Gracias por la ayuda y la información ...

¿Fue útil?

Solución

Time_wait no es una conexión abierta. Es un estado del sistema operativo para un socket para que pueda asegurarse de que todos los datos hayan llegado. AFAIK, la longitud predeterminada para esto en Linux es un minuto. Mira esto http://antmeetspenguin.blogspot.com/2008/10/timewait-innetstat.html, tiene una buena explicación. Sin embargo, puede decirle al núcleo que reutilice los enchufes Time_Wait:

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

lo reduce a 30 segundos.

Sin embargo, debería verificar por qué está haciendo tantas conexiones. Estás diciendo que estás usando los paquetes de Debian para Mongod y Pymongo, y tienden a estar desactualizados. Realmente quieres estar ejecutando MongoD 2.0.2 y Pymongo 2.1.1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top