クライアントが接続できるサーバーアプリケーションをJavaで構築しました。クライアントが x 秒ごとに小さなメッセージを送信するハートビート システムを実装しました。サーバー側では、クライアントがメッセージを送信した時間を HashMap に保存し、すべてのクライアントに対して TimerTask を使用して、クライアントからメッセージを受信したかどうかを x 秒ごとに確認します。
少量のクライアントではすべて正常に動作しますが、クライアントの数が増えると (2k+)、メモリ量が非常に大きくなり、Times は多くの TimerTask を処理する必要があり、プログラムは多くの CPU を消費し始めます。
これを実装するより良い方法はありますか?データベースを使用して、一定時間更新を送信しなかったクライアントを選択することを考えました。これはうまくいくと思いますか、それともより良い方法だと思いますか。