0

オブジェクト プールの Java 実装があり、オブジェクトが TCP ソケットに正常に接続されているとします。

プール レベル (ConnectionFactory) で「クリーンアップ」スレッドを保持し、プールが M 分間アイドル状態になっているかどうかを N 分ごとにチェックします (つまり、最後のアクセスは M 分前で、ここでは M>N)。

その場合は、コア数のソケットだけがプールに残るまで、すべての追加ソケットを閉じます。

ここで、突然閉じられたソケットも追跡して除去する必要があります。動作しているすべてのソケットを閉じて、突然閉じたソケット (反対側で閉じた) を持つプールになってしまう可能性があるため、これは必須のようです。

間違いなく、接続ファクトリ レベルではなく、ソケット レベルを調べる必要があります。

「Java で突然閉じられたソケットのトレース」、「接続プールのクリーニング」について調査しましたが、(各ソケットごとに) ACK または KeepAliveChecks を送信しない限り、Java ソケット API には何もありません。つまり、定期的にすべてのソケットでこれを実行する必要があります。

最良の方法は何ですか (つまり、他に方法はありますか) 良い人 (適切に接続されたソケット) をプールに保持することになりますか?

プールで突然閉じられたソケットをクリーンアップする方法は?

4

2 に答える 2