Domanda

Stiamo cercando di creare un server API per il nostro progetto.

Stiamo usando MongoDB con PyMongo sulle scatole di Debian. Tutto è aggiornato.

Ma stiamo avendo un problema di connessione davvero strano. Vi sono generalmente più di 15k-32K connessioni alla porta MongoDB quando controllo

root@webserver1:/# netstat -na | Grep Mongo_DB_IP | wc -l

Ho ottenuto il 15363

Le connessioni sono allo stato time_wait ...

Ma quando controllo Mongo, al momento vedo solo 5-6 connessioni ...

Abbiamo scritto una classe MongoDB, che crea un'istanza e fa connessione. Abbiamo provato a chiamare Conn.Disconnect () o Conn.End_Request () Every Terry End ma non è fermato quel numero di connessione elevato ...

C'è qualcuno che può dire quale dovrebbe essere il mio errore, o c'è qualche lezione di pitone scritta per MongoDB per esaminare come gli altri fanno come cose ...

Grazie per l'aiuto e le informazioni ...

È stato utile?

Soluzione

Time_wait non è una connessione aperta. È uno stato del sistema operativo per una presa in modo che possa assicurarsi che tutti i dati siano arrivati. Afaik, la lunghezza predefinita per questo su Linux è di un minuto. Dai un'occhiata a http://antmeetspenguin.blogspot.com/2008/10/timewait-in-netstat.html, ha una buona spiegazione. Puoi dire al kernel di riutilizzare le prese time_wait:

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

lo riduce a 30 secondi.

Tuttavia, dovresti controllare perché stai facendo così tante connessioni. Stai dicendo che stai usando i pacchetti Debian per Mongod e Pympongo e tendono ad essere obsoleti. Vuoi davvero eseguire Mongod 2.0.2 e Pymongo 2.1.1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top