私のアプリケーションの 1 つで、HttpURLConnection を使用して別のサーバーにヒットしました。アプリケーションは数か月間問題なく動作していましたが、突然すべてのヒットが接続タイムアウトに直面しています。断続的に、いくつかの呼び出し (500 回に 1 回) が成功し、他の呼び出しはすべて失敗します。アプリケーションは、Tomcat 5.5 を使用して Java 5 で実行されている Linux にデプロイされます。コマンドラインからcurlとwgetを試してみましたが、うまくいきました。
まったく同じコード ベースを使用する別の Java プロセスは、コマンド ラインから接続できます。Tomcat サーバーとマシンを再起動しましたが、役に立ちませんでした。マシンを徹底的にチェックしましたが、これを妨げるブロック プロセス/ファイアウォールはありません (他の Java プロセスが接続できることは明らかです)。
断続的なバースト (1 日 1 回など) では、アプリケーションはいくつかの接続を確立でき、その後、壊れた状態に戻ります。スタック トレースからも明らかなことはあまりありません。
うまくいかない可能性のある提案はありますか?
[更新] アプリケーションの実行中にサーバーの DNS が変更された場合、Java はこれを検出せず、古い IP からの接続がタイムアウトになります (IP がダウンしていると見なされます)。したがって、CDN の場合、ノードがダウンして別の IP に置き換えられると、問題が発生する可能性があります。