BoltzEngine の並列動作

BoltzEngine は、Master と Slave のプロセスが連携して動作します。 1つの Master は複数の Slave を扱うことが可能で、また、1つの Slave は複数の Master から参照することが可能です。 複数の Slave を利用する場合は、boltz masterコマンドの-slavesオプションを使って Slave のホスト名とポート番号を与えます。

Slave の動作仕様

Slave は、Master から同時に受け付けることが可能な通知リクエスト数が決まっています。 EL7 版の場合は/etc/sysconfig/boltz/slave、EL6 版の場合は/etc/init/boltz-slavemax_agents変数が、1つの Master から同時に処理可能な上限です。

max_agentsは、異なる Master であれば別のものとして扱います。 そのため、例えばmax_agents=10の Slave が2つの Master から参照された場合は、 Slave プロセスは全体として同時に20個まで同時実行を行います。

Masterの動作仕様

Masterは、自分が扱えるSlaveのmax_agentsを全てまとめて、同時に利用するワーカーを構成します。 例えばmax_agents=30の Slave が3つあれば、Master は90個のワーカーが利用可能です。 十分に小さい通知を1回リクエストすると、ワーカーを1つ消費して APNs/FCM/WebPush/ADM などへ通知を行い、 処理が終わればワーカーとして再利用ができる状態へ戻ります。

1つのリクエストが一定以上大きい場合は、通知速度を上げるため、複数のワーカーを消費して並列処理を行います。 Master が扱うワーカー数を超えた通知がリクエストされた場合、 溢れたメッセージは Master の待機リストに入りますが、 処理を終えたワーカーが再利用可能になった時点で待機リストから取り出して通知を行います。

Master が同時に受け付けることができるリクエスト数に、プログラム上の制限はありませんが、 以下のような要因によって最大数は異なります。

  • メモリ容量
  • Masterプロセスのulimit -n

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら

記事へ戻る