Cloudflare Waiting Roomの設定項目(アクティブユーザーの合計数、分単位の新規ユーザー、セッション時間)についてまとめてみた

2022.09.16

こんにちは、yagiです。

本日は、Cloudflare Waiting Roomの設定時に指定する項目でよくお問い合わせをいただく3項目(アクティブユーザーの合計数、分単位の新規ユーザー、セッション時間)について、 自分の整理も兼ねてまとめてみましたので紹介したいと思います。

Waiting Roomの設定方法については、弊社のしがひの以下の記事をご参照ください。

 ワクチン予約サイトを落とさない Cloudflare Waiting Room の設定方法

Cloudflare Waiting Roomとは

Cloudflare Waiting Roomを導入することで、アクセス集中によりオリジンサーバに高負荷がかかるような状況となっても、 順番を守って一定量のアクセスを通過させるように設定できます。 結果として、サーバダウンや高負荷からオリジンを守ることができ、利用者様にもサイトを順番通りにご利用いただくことが可能となるサービスです。

Waiting Roomを通してCloudflareを通過するリクエストのイメージ

Cloudflare Waiting Roomの設定

アカウントのウェブサイトから、Traffic > Waiting Rooms を選択します。

Waiting Rooms の 「Create」 ボタンを押下します。

Create Waiting Room画面で、Name、Description、Hostname、Path(Optional)を入力し、 アクティブユーザーの合計数(Total active users)、分単位の新規ユーザー(New users per minute)、セッション時間(Session duration)を入力します。

ここではQueueing method には FIFO を設定します。

アクティブユーザーの合計数(Total active users)、分単位の新規ユーザー(New users per minute)、セッション時間(Session duration)に何を入力すれば良いのか

Cloudflare のベストプラクティス及び Configuration settings には、以下のように記載されています。

 Best practices

 Configuration settings

・ アクティブユーザーの合計数(Total active users)は、オリジンで許可されるアクティブなセッション数(=その時間帯のアクティブなユーザー数)の合計値です。 この値を超えてくると順番にWaiting Roomに誘導され、待った後にオリジンへ到達することとなります。

上記ベストプラクティスにあるように、オリジンのキャパシティの75%で設定するのが推奨となっており、200 以下の値は設定できません。

・ 分単位の新規ユーザー(New users per minute)は、1分間にオリジンへ新規に誘導されるユーザー数のしきい値で、200 より大きく、Total active usersを超えない値となっています。 現時点でアクティブなユーザーが Total active users の値を超えていない場合であっても、New users per minute以上のユーザーはWaiting Roomへ誘導されるため、 New users per minuteの値以上の割合で、ユーザーがオリジンへ到達することはありません。

上記の2つの項目を適切に設定することで、一気に大量のトラフィックがオリジンに到達することを防ぎ、オリジンを守ることができます。

・ セッション時間(Session duration)については、ユーザーがオリジン到達後、画面を操作せず通信をしない状態でも画面に戻ることができる時間となっています。

仮に5分で設定した場合、オリジン到達後に5分以上画面操作せず通信をしない状態で放置してしまうと、ユーザーは再度Waiting Roomへの誘導を経てオリジンへ誘導されることとなりますが、5分以内であれば、画面を離れても、Session Cookieが有効である限りはWaiting Roomへの誘導なく戻ることが可能となっています。

 Configuration settings - session-duration

上記を踏まえると、例えば、

Total active users と New users per minute をどちらも 1000 に設定した場合、オリジンへは1000 ユーザーまで(上限)、1分間に(割合)誘導されます。

Total active users を 1000 として、 New users per minute を 200と設定すれば、オリジンへは1000ユーザーまで(上限)、1分間には 200(割合)までを上限として誘導され、それを超えるとWaiting Roomへ誘導されることとなります。

ユーザーの合計数を指定しつつ、オリジンへある程度の割合でトラフィックが入ってくることを許容できるか、少しづつにするか、オリジンのキャパシティと処理の負荷やアプリの特性などを考慮して、決めていくことができます。

結論

Cloudflare Waiting Roomの設定項目(アクティブユーザーの合計数、分単位の新規ユーザー、セッション時間)について簡単にまとめてみました。

この記事がどなたかの参考になれば幸いです。

補足

上記の説明について、表現がわかりづらく社内で誤解を招いてしまったため、こちらで補足します。

Total active users と New users per minute はそれぞれが独立した値で、それぞれの条件でWaiting Roomへ誘導されます。(OR条件)

よって、

アクティブユーザーがTotal active users で設定した値に達していなくても、 New users per minute を超える割合でオリジンへ誘導されることはありませんし、

アクティブユーザーがTotal active users で設定した値にすでに達していれば、 New users per minute を下回る割合でオリジンへの新規アクセスがあったとしても、Waiting Roomへ新規に誘導されることとなります。(New users per minuteは1分あたりに追加されるユーザー数を示したものではなく、1 分あたりに許可されるユーザー数(割合)のしきい値として機能する値となります。)

なお、アクティブユーザーはCookieの有効期限( Cookie expiration time )で判断されます。

参照先のドキュメントにあるように、ユーザーがWaiting Roomにいる間は有効期限は20 秒ごとに自動的に更新されますが、オリジンにアクセスした後は、何も通信を行わずにSession durationで設定した時間が経過するとCookieの有効期限が切れることとなり、その場合はWaiting Roomにて再度並び直すこととなります。

感想

個人的な感想にはなりますが、上記の3項目の設定値に関しては、アクセスの状況とオリジンの負荷を見つつ、適宜適切なタイミングで、チューニングを実施すると良いと思います。

Cloudflareのダッシュボード上でアクティブユーザーやWaiting Roomへ誘導されたユーザーの状況を確認できるので、次回はそちらもブログに記載できればと思っています。