0

永続的なメッセージを保持する永続的なキューがあります。メッセージは、1 秒あたり約 10 メッセージの速度でキューに到着します。

クライアントは、その速度でそれらのメッセージを取得できません。その結果、サーバー上のキューは増え続けます。

各メッセージは 1 KB 未満で、サーバーとマシンの間に 2 Mbps の正常な回線があります。ネットワーク監視ユーティリティを使用すると、その帯域幅をほとんど使用していないことがわかりました。

現在、クライアントはメッセージに対して何もしていません。メッセージをコンソールに出力するだけなので、クライアントでの処理時間はほぼ 0 です。

その他の詳細: Java クライアントを使用しています。10000 メッセージをプリフェッチするようにクライアントを設定しました。(デフォルト値でも試してみました) 往復時間は約 350 ミリ秒です。メッセージは個別に確認されます。

利用可能なリソースは十分に活用されておらず、1 秒あたり 10 件のメッセージはほとんど負荷にならないと考えています。キューに保持されているメッセージがクライアントにより速く転送されるように処理を高速化するにはどうすればよいですか。何らかのバッチ処理を使用している可能性があります。

4

1 に答える 1

1

350 ミリ秒ごとに個別にメッセージを確認している場合、コンシューマーは 1 秒あたり約 1/0.35 または約 2.9 メッセージを達成すると予想されます。ただし、プロトコルはそれほど効率的ではない可能性があり、メッセージを確認して次のメッセージを取得するには、サーバーへの 2 回の往復が必要になる場合があります。つまり、毎秒 1.4 メッセージがより現実的かもしれません。

350 ミリ秒の往復は非常に高く、その間に世界中を行き来できるため、単純なソリューションは最適ではない可能性があります。例:ロンドン -> ニューヨーク -> 東京 -> ロンドン。

代わりに、クライアントのローカルにブローカーを配置してみます。このようにして、往復はクライアントとローカル ブローカーの間で行われます。

于 2013-03-28T10:35:17.097 に答える