流量制御について

流量制御とは

流量制御とは、APIの過剰使用を防ぐために導入された仕組みです。 対象となるAPIのスペース全体での呼び出し頻度・呼び出す内容を基にして、流量制御は行われます。

対象となるAPIを高頻度で使用した場合、流量制御による遅延が発生します。 流量制御による遅延が発生すると、APIの呼び出しからその影響が出るまでにかかる時間が長くなります。

流量制御の対象

現在の実装では、他のアイテム・プレイヤーの状態を変更するAPIに対して流量制御が行われます。 どのAPIが流量制御の対象となるかは、スクリプトリファレンスの各APIの記述を参照してください。

流量制御による遅延が発生する条件

目安として、対象となるAPIの使用頻度がひとつのスペース内で80回/秒を超えた場合、流量制御による遅延が発生し始めます。 流量制御による遅延が実際に発生しているかどうかはコンソールに出力されたログで確認できます。

デベロッパーメニューの「ログをすべて表示」の項目を有効にすると、流量制御による遅延に関するログが以下のような警告として表示されるようになります。

ClusterMessageDelayWarning: a delay of 0.6 seconds has occurred (maximum delay limit: 30 seconds)

上記の例では、0.6秒の流量制御による遅延が発生しています。

流量制御による遅延への対策

流量制御による遅延が発生してもclusterのアプリは動作を続けますが、ユーザーの体験は劣化します。

作成しているワールドにで流量制御による遅延が発生している場合は、以下の対策が有効です。

  • 遅延の原因となるAPIの使用頻度を減らす
  • sendsendTo などのAPIにおいて、送信するメッセージのデータサイズを減らす

より詳細な制御方法は流量制御の詳細を参照してください。

流量制御による遅延が大きい場合に発生するエラー

以下のAPIは、流量制御による遅延の大きさが30秒以上であるときにエラーとなります。

  • ItemHandle.send
  • PlayerHandle.send
  • PlayerScript.sendTo