java - MongoSocketReadTimeoutException: メッセージ受信中にタイムアウトしました
为情所困
为情所困 2017-05-31 10:35:10
0
2
3832

1. 最近、mongodb を操作するために spring-boot と spring-data-mongo を使用しています。

2. 毎朝サーバーのログを確認すると、同じエラーが報告されています。一晩中サーバーにアクセスする人はいないと推定され、翌日誰かがサーバーにアクセスするとエラーが発生します。

3. エラー ログは次のとおりです:

リーリー

4. いくつかの解決策を試し、mongodb をリンクするコードを次のように変更しました。 リーリー

また、サーバー (Ubuntu) ipv4 のキープアライブ時間を 120 秒に変更しました。

しかし、エラーはまだ残っています。アドバイスをいただければ幸いです。ありがとうございます。

为情所困
为情所困

全員に返信(2)
伊谢尔伦

おそらく MongoDB が Java によって維持されている接続を開始しました (ステータスが CLOSE_WAIT に変わり、データの送信のみが可能になり、データの受信ができなくなりました)。解決策は次の 2 つの場所から考えられます。

  1. 接続プールを設定するか (これは非常に複雑に見えます)、または単純に接続プールを使用しません。つまり

    socketKeepAlive设成false

  2. 問題はすべて朝に現れるため、MongoDB に早朝に接続をリセットする戦略があるかどうかを確認できます。

いいねを押す +0
左手右手慢动作

1. クエリ時間が長すぎる可能性があります。プロファイリングまたはサーバーのログ情報を調べて、10 秒を超えるクエリ時間のステートメントを見つけてください。最適化されます。

2. このエラー状況が軽減されるかどうかを確認するには、socketTimeout を適切に増やします。

ご参考までに。

MongoDB が大好きです!楽しむ!


2017 MongoDB 中国語コミュニティ北京ユーザー グループ カンファレンスが、2017 年 6 月 3 日 13:00 ~ 18:00 まで間もなく開催されます

Tシャツなどのプチギフトもございます!ふふ!

登録してください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート