現在の状態のスナップショットを定期的に送信する必要があるアプリケーションがあります。これは現在、約 500,000 の 64 バイト メッセージで表されます。ZMQ を使用して、これほど多くのメッセージを迅速かつ確実に送受信するのに苦労しています。
現在、これを行うために tcp 経由で PUB/SUB を使用していますが、仕事が完了する限り、パターンにもプロトコルにも執着していません。私の実験では、送信と受信の最高水準点、送信と受信のバッファ設定をいじり、送信ループにスリープを追加して少し遅くすることに焦点を当てました。私には非常に寛大に見える設定 (500K HWM、10MB バッファ) で、ループバック接続のみを使用しても、すべてのメッセージが一貫して受信されるわけではありません。
私は、これらまたはその他のチューニング パラメーターの適切な設定に興味があります。また、さまざまな設定がもたらす効果をどのように判断するかについて、より広範に興味があります。
適切な回答を提供するのに役立つ可能性のある詳細情報:
配布は 1 対多です。募集人数は20名程度を予定しております。
各メッセージは、異なる金融商品に関する一連の情報を表し、すべて同時に観察されます。私の考えでは、それらを 1 つの大きなメッセージに結合すること (すべてのメッセージのセットが論理的に 1 つの完全なスナップショットを構成する) と、それらを分離しておくこと (クライアントは潜在的に一部の手段にのみ関心がある可能性があり、これは役立つと思います) の両方について議論することができます。それらをより簡単にフィルタリングします)。
メッセージの意図された頻度は、基本的に 20 ミリ秒ごとより速くなく、5 秒より遅くありません。実際に到達する場所は、おそらくパフォーマンスの考慮事項 (つまり、サーバーが実際にメッセージを送り出す速度と、クライアントにとって圧倒されるデータ レートの種類) の影響を受けるでしょう。