外部課金サーバーに接続するアプリケーションがあります。クライアント側のサーバーに障害が発生すると、何百もの接続が CLOSE_WAIT 状態になりました。
クライアントコードを確認しました。そして、クライアントが TCP 接続を適切に閉じているようです。
サーバー側の問題によりサーバーが接続を適切に閉じていないためにこれが発生した場合、クライアントフォームがソケットを CLOSE_WAIT 状態に保つのを防ぐ方法はありますか?
また、スレッド数と CPU 使用率が通常よりも上昇していることも確認しました。
アプリの再起動後、数時間経過しても CLOSE_WAIT の蓄積はなく、スレッド数と CPU 使用率は正常に戻りました。
サーバーが接続を適切に閉じることができなかった場合、クライアントを再起動して CLOSE_WAIT を削除する以外に何かすることはありませんか? (つまり、クライアント側でこの問題を防ぐことができるコードの改善があります)
クライアント側でカスタマイズされた JDiameter コードを使用して課金サーバーに接続します。
(サーバー側のコードにはアクセスできません)