MongoDB 接続が数分間アイドル状態になると、次のリクエストがエラーで終了します。コマンド ライン クライアントからは、mongo
次のようになります。
> db.users.find()
Sat Jan 12 23:42:35 Socket recv() errno:54 Connection reset by peer 107.22.25.25:47207
Sat Jan 12 23:42:35 SocketException: remote: 107.22.25.25:47207 error: 9001 socket exception [1] server [107.22.25.25:47207]
Sat Jan 12 23:42:35 DBClientCursor::init call() failed
Sat Jan 12 23:42:35 query failed : chowology.users {} to: ds047207.mongolab.com:47207
Error: error doing query: failed
Sat Jan 12 23:42:35 trying reconnect to ds047207.mongolab.com:47207
Sat Jan 12 23:42:35 reconnect ds047207.mongolab.com:47207 ok
MongoHQ と MongoLab のサンドボックス インスタンスに対して問題が発生しています。
再接続により、次のリクエストは正常に処理されます。これは私の Web アプリの問題です。数分間操作を行わないと、Web リクエスト中にこのエラーが発生するからです。私を驚かせたことが2つあります。
- その MongoDB 接続は非常に定期的かつ頻繁に破棄されます。
- 再接続後に自動的に再試行するのではなく、ドライバーが単に例外を発生させること (私は、mongoose を使用する connect-mongo を使用し、次にnode-mongodb-nativeを使用します)。
これは他のみんなの経験ですか?これはどのように扱われるべきですか?アプリ開発者がデータベース操作を再試行例外処理のナンセンスでラップすると、私は驚かれることでしょう。