これらのタイムアウトは、非アクティブな期間の後に発生しましたか?アイドル状態が長すぎると、接続プールが古くなった可能性があります。
もしそうなら、これを行うには2つの方法があります:
-
ソケットタイムアウト例外をキャッチすると、即時リクエストで新しい接続プールにアクセスできるようになります。 (これは、接続オブジェクトの自動再接続オプションがtrueのままになっている場合です。これがデフォルトです。)
-
カスタムキープアライブを使用して、同じ接続プールを使用してmongodサーバーに定期的にpingを実行し、プールが最新の状態に保たれるようにします。
オプション1は簡単に実装できますが、デフォルトのソケットタイムアウトは約30秒で、かなり過剰です。この設定は必要に応じて変更できます。
オプション2は、スレッド化を伴うちょっとしたハックです。