私は ZMQ の初心者です ZMQ バージョン - 2.2.1 Ubuntu - 10.04 複数のパブリッシャーと複数のサブスクライバー間の通信に PUB-SUB パターンを使用しています。フォワーダーは、複数のパブリッシャーからのデータをサブスクライブするために使用され、同じデータがすべてのサブスクライバーにパブリッシュされます。現在、3 つのパブリッシャーが実行されており、各パブリッシャーが PUB チャネル経由で 1 秒間に 1000 メッセージを送信するとします。サブスクライバーはデータを受信して保存し、1 秒ごとにデータベースに書き込みます。データベースが関与しているため、加入者がデータを受信する速度が遅くなり、その結果、メモリ使用量 (RAM) が 1 秒ごとに 6 ~ 7 MB 増加します。最後に、フォワーダーの両方のソケットでオプション ZWQ_HWM と ZMQ_SWAP を使用してみました。しかし、それでも問題は解決しません。これに対する解決策はありますか?
質問する
256 次
1 に答える
1
全体的な問題は、データベースがパブリッシャーに追いつかないことです。0MQ はこれを解決できません。おそらく挿入の方法など、システムの動作を変更することに基づくアーキテクチャ上のソリューションが必要です。
いくつかのオプションがあります:
- より高速なデータベースを使用する
- より高速なデータベース挿入方法を使用する
- 別のプロセスによって非同期に処理されるログに書き込む
- 受信者がバックアップされていることを送信者に伝えることができるソケットパターンに変更して、送信者を一時停止します (可能な場合)。
あなたの場合、spool-to-disk-file オプションが最適だと思います。
于 2012-12-14T07:49:13.107 に答える