MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Socket-Timeout-Ausnahme in Mongo

Traten diese Auszeiten nach Zeiten der Inaktivität auf? Es ist wahrscheinlich, dass Ihr Verbindungspool veraltet ist, nachdem er zu lange im Leerlauf war.

In diesem Fall gibt es zwei Möglichkeiten:

  1. Fangen Sie die Socket-Timeout-Ausnahmen ab, und Ihre unmittelbare Anforderung sollte in der Lage sein, auf einen neuen Verbindungspool zuzugreifen. (Dies ist der Fall, wenn die Option für die automatische Wiederverbindung in Ihrem Verbindungsobjekt auf „true“ belassen wird, was die Standardeinstellung ist.)

  2. Verwenden Sie ein benutzerdefiniertes Keep-Alive, um den Mongod-Server regelmäßig mit demselben Verbindungspool zu pingen, damit der Pool frisch bleibt.

Option 1 ist einfach zu implementieren, aber das Standard-Socket-Timeout liegt bei etwa 30 Sekunden, was ziemlich übertrieben ist. Sie können diese Einstellung nach Bedarf ändern.

Option 2 ist ein kleiner Hack, der Threading beinhaltet.