概要
プッシュスロットリングは OneSignal がプッシュ通知を配信するレートを制御します。スロットリングを使用して配信を時間分散させることで、サーバーの過負荷を防ぎ、大量送信中のパフォーマンス低下を回避し、デバイス間で一貫したユーザーエクスペリエンスを維持できます。プッシュ送信がサーバーに影響する理由
大規模なオーディエンスにプッシュ通知を送信すると、クリック率が低い場合でも、自分のサーバーへのトラフィックが突然急増する可能性があります。これは、配信そのもの(クリックだけでなく)がインフラへの複数種類のリクエストをトリガーするためです。これらのソースを理解することで、適切な緩和策を選択できます。自己ホスト型の画像とメディア
プッシュ通知に画像(big_picture や chrome_web_image など)が含まれている場合、通知を受信したすべてのデバイスが配信時にその画像を即座にダウンロードします。画像が CDN ではなく自分のサーバーでホストされている場合、配信された通知ごとに 1 つの HTTP リクエストが生成されます——数秒以内に数万件のリクエストが発生する可能性があります。
推奨事項:
- 通知画像はアプリケーションサーバーではなく CDN(CloudFront、Cloudflare、Fastly など)でホストしてください。
- メディアを自己ホストする必要がある場合は、プッシュスロットリングを使用して配信を時間分散させてください。
同時アプリ起動
プッシュ配信により、多くのユーザーが同時にアプリを開くようになります。各アプリ起動は通常、バックエンドへの複数のリクエストを生成します:セッション初期化、コンテンツ取得、API 呼び出し、分析イベント。数千件の通知が同時に配信されると、開封率が低くても大幅なトラフィック急増につながる可能性があります。 推奨事項:- プッシュスロットリングを使用して配信を段階的に行い、アプリ起動をより広い時間ウィンドウに分散させてください。
- バックエンドが高容量送信からのバーストトラフィックを処理できることを確認するか、自動スケールインフラを使用してください。
Event Streams
Event Streams を webhook デスティネーションで設定している場合、OneSignal はリアルタイムで各イベント(message.sent、message.delivered、message.clicked など)についてエンドポイントに HTTP リクエストを送信します。大規模なプッシュ送信中、これはオーディエンスサイズに比例した webhook リクエストのバーストを生成する可能性があります。
OneSignal は送信 Event Stream webhook トラフィックのレートを制限しません。エンドポイントはメッセージ送信で生成されるイベント量を処理できる必要があります。
- webhook エンドポイントがオーディエンスサイズに比例したスループットを処理できることを確認してください。
- バーストを吸収するために、直接 webhook の代わりに中間キューまたはバッファ(Amazon Kinesis、Google Pub/Sub など)を使用してください。Event Streams はこれらをデスティネーションとしてネイティブにサポートしています。
- プッシュスロットリングを使用して、エンドポイントへのピークイベントレートを削減してください。
Journey webhooks
Journey webhooks は、ユーザーが Journey の特定のステップに到達したときにサーバーに HTTP リクエストを送信します。Journey はユーザーの行動に基づいて自然に配信のペースを調整しますが、トラフィックの多い Journey でも大量の webhook ボリュームが発生する可能性があります。応答が遅いまたは過負荷のエンドポイントは、webhook の自動無効化をトリガーする可能性があります。 推奨事項:- webhook エンドポイントは素早く応答(
200 OKを返す)するよう設計し、重い処理はバックグラウンドジョブに委ねてください。 - エンドポイントからの
429レスポンスを監視してください。これは OneSignal が webhook を無効化するトリガーになる可能性があります。 - Journey webhooks ドキュメントのパフォーマンスガイダンスを確認してください。
Service Worker フェッチ(web push)
Web push の場合、ブラウザはサーバーから定期的に OneSignal Service Worker ファイルを再フェッチします(通常はキャッシュの有効期限が切れたとき、最大 24 時間ごと)。プッシュ通知が配信されると、ブラウザが更新された Service Worker ファイルをチェックする可能性があり、各 web push サブスクリプションからホスティングサーバーへの 1 リクエストが生成されます。 推奨事項:- CDN から
OneSignalSDKWorker.jsファイルを提供するか、ホスティングサーバーがリクエスト量を処理できることを確認してください。 - 適切なキャッシュヘッダーを設定して再フェッチ頻度を減らしてください。
- 詳細については OneSignal Service Worker ドキュメントをご覧ください。
適切なアプローチの選択
| トラフィックソース | スロットリングの影響? | 代替緩和策 |
|---|---|---|
| 自己ホスト型画像 | あり——遅い配信 = 少ない同時ダウンロード | CDN でホスト |
| 同時アプリ起動 | あり——段階的配信でユーザーセッションを分散 | 自動スケールインフラ |
| Event Streams(webhooks) | あり——遅い配信 = 低いイベントレート | キューベースのデスティネーションを使用(Kinesis、Pub/Sub など) |
| Journey webhooks | なし——Journey はスロットリングをサポートしない | エンドポイントのパフォーマンスを最適化;バックグラウンド処理を使用 |
| Service Worker フェッチ | あり——遅い配信 = 少ない同時フェッチ | CDN ホスティング;キャッシュヘッダー |
設定オプション
スロットリングを使用するには、グローバル設定レベルで有効にする必要があります。グローバルスロットリング設定
Settings > Push & In-App > Throttling ですべてのプッシュメッセージのスロットリングを有効にします。有効にすると、この設定はデフォルトですべてのプッシュ通知に適用されますが、個別のメッセージごとにオーバーライドできます。
メッセージごとのスロットリングオーバーライド
個別のメッセージでグローバルスロットリング設定をオーバーライドできます。- 通知作成時に、「Override throttling setting」ボックスにチェックを入れます
- 希望する 1 分あたりのメッセージレートを設定します
- 特定のメッセージのスロットリングを無効にするには、1 分あたりのメッセージフィールドに「0」を入力します
throttle_rate_per_minute プロパティを使用します。
スロットリングの仕組み
レート変換プロセス
OneSignal は配信を最適化するために、1 分あたりの設定を 1 秒あたりのレートに変換します:- システムはスロットルレートを 60(1 分あたりの秒数)で除算します
- 結果は最も近い整数に切り下げられます(OneSignal は部分的なメッセージを送信できません)
- この 1 秒あたりのレートが配信プロセス全体に適用されます
- OneSignal は 60 で割ります:1,019 ÷ 60 = 16.98 メッセージ/秒
- 切り下げて 16 メッセージ/秒
- 実際の配信レート:16 × 60 = 960 メッセージ/分(設定レートより 59 少ない)
制限と考慮事項
24 時間配信ウィンドウ
すべてのスロットリングされた通知は、送信から 24 時間以内に配信を完了する必要があります。スロットリングレートにより配信が 24 時間を超える場合、OneSignal はこの期間内に完了するようにレートを自動的に調整します。 例: 20,000 ユーザーに対して 1 分あたり 10 メッセージのスロットルレートを設定した場合——配信に約 33 時間かかります。OneSignal は 24 時間以内に配信が完了するよう、レートを自動的に 1 分あたり約 14 メッセージに調整します。互換性と利用可能性
スロットリングは、通知の作成 API または Messages > New Push ダッシュボードインターフェースから送信されるプッシュ通知にのみ使用できます。Journey および Automated Messages ではサポートされていません(上記の概要テーブルを参照)。タイムゾーンとインテリジェント配信
スロットリングは、タイムゾーンとインテリジェント配信よりも優先されます。スロットリングが有効になっている場合、OneSignal はその通知のこれらの機能を無視します。 タイムゾーンまたはインテリジェント配信を使用するには:- 配信スケジュールで、その特定の通知のスロットリングを無効にします
- 「Override throttling setting」を「0」に設定します
- API 通知の場合、
throttle_rate_per_minute: 0を設定します
よくある質問
スロットリングはインテリジェント配信またはタイムゾーン配信と連携しますか?
いいえ。スロットリングはインテリジェント配信とタイムゾーン配信の両方よりも優先されます。通知に対してスロットリングが有効になっている場合、OneSignal はこれらのスケジューリング機能を無視します。インテリジェント配信またはタイムゾーン配信を使用するには、その通知のスロットルオーバーライドを0 に設定してください。
スロットルレートが 24 時間を超える場合はどうなりますか?
OneSignal は配信が 24 時間以内に完了するよう自動的にスロットルレートを引き上げます。例えば、20,000 ユーザーに対して 1 分あたり 10 メッセージで送信すると約 33 時間かかるため、OneSignal はレートを 1 分あたり約 14 メッセージに調整します。Journey または Automated Messages にスロットリングを適用できますか?
いいえ。スロットリングはダッシュボード(Messages > New Push)または通知の作成 API から送信されるプッシュ通知にのみ適用されます。Journey と Automated Messages はユーザーが条件を満たしたときに動的に配信されるため、自然に配信が時間分散されます。なぜ実際の配信レートが設定値より低いのですか?
OneSignal は 1 分あたりのレートを 1 秒あたりのレートに変換して切り下げます。例えば、1 分あたり 1,019 メッセージは 1 秒あたり 16 メッセージになります(1,019 ÷ 60 = 16.98、切り下げ)。実際のレートは 1 分あたり 960 メッセージになります。関連ページ
プッシュの概要
OneSignal でモバイルおよび web プッシュ通知を送信・管理します。
通知作成 API
throttle_rate_per_minute プロパティを含む、通知の作成と送信の API リファレンス。Event Streams
配信・エンゲージメントイベントを webhooks、Kinesis、または Pub/Sub にストリーミングします。
OneSignal Service Worker
web プッシュ通知の Service Worker ファイルを設定します。
Journey の概要
ユーザーのアクションに応答するマルチステップメッセージワークフローを構築します。