検索

ホームページ  >  に質問  >  本文

java - MongoSocketReadTimeoutException: メッセージ受信中にタイムアウトしました

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

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

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

リーリー

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

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

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

为情所困为情所困2812日前3917

全員に返信(2)返信します

  • 伊谢尔伦

    伊谢尔伦2017-05-31 10:37:10

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

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

      socketKeepAlive设成false

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

    3. 返事
      0
  • ringa_lee

    ringa_lee2017-05-31 10:37:10

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

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

    ご参考までに。

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


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

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

    登録してください

    返事
    0
  • キャンセル返事