ApsaraDB for Redis では、client-output-buffer-limit pubsub パラメーターを使用して、Pub/Sub クライアントの出力バッファーサイズの制限を指定します。 Pub/Sub クライアントのバッファーデータのサイズが制限を超えると、ApsaraDB for Redis はクライアントとの接続を閉じます。 これにより、バッファーデータがメモリを過剰に占有することを防止し、ApsaraDB for Redis のパフォーマンスを確保します。

ApsaraDB for Redis の出力バッファー

ApsaraDB for Redis は、各クライアントのメモリに出力バッファーを割り当てます。 クライアントで開始されたコマンドを処理した後、ApsaraDB for Redis は結果データを一時的に出力バッファーに保存してからクライアントにデータを送信します。 出力バッファーのサイズを制限しないと、大量のデータが出力バッファーに蓄積される可能性があります。 最終的にデータは利用可能なメモリをすべて使い果たし、サービスがクラッシュする可能性があります。 この問題は、次の 2 つの一般的なシナリオで発生します。

  • クライアントで開始されたコマンドに対して、大量のデータを返す必要がある。
  • メッセージのパブリッシュが、メッセージの消費を上回る。

client-output-buffer-limit pubsub パラメーターを適切に設定することで、Pub/Sub クライアントの出力バッファーがメモリを過剰に占有するのを防止できます。

パラメーターオプション

client-output-buffer-limit pubsub パラメーターには、hard limitsoft limitsoft seconds のオプションがあります。

  • hard limit:Pub/Sub クライアントの出力バッファーが、hard limit に指定されたバイト数に達するか超えた場合 、クライアントは直ちに切断されます。
  • soft limitsoft secondssoft seconds に指定された秒数より長い期間、Pub/Sub クライアントの出力バッファーが soft limit に指定されたバイト数に達するか超えた場合、クライアントは切断されます。

ApisaraDB for Redis では、hard limitsoft limitsoft seconds のデフォルト値は、それぞれ 33554432 バイト (32 MB)、8388608 バイト (8 MB)、60 秒です。 ビジネスニーズとクライアントの能力に合わせて値をカスタマイズできます。

ApsaraDB for Redis コンソールでのパラメーターの変更

  1. ApsaraDB for Redis コンソールにログインします。
  2. 上部のナビゲーションバーで、インスタンスが存在するリージョンを選択します。
  3. [インスタンス一覧] ページで、対象のインスタンス ID をクリックします。 または、[詳細] アイコンをクリックし、対象インスタンスの [操作] 列の [管理] を選択します。
  4. [インスタンス情報] ページの左側のナビゲーションウィンドウで、[システムパラメーター] をクリックします。
  5. 表示されるページで client-output-buffer-limit pubsub パラメーターを見つけ、[操作] 列の [変更] をクリックします。
    client-output-buffer-limit pubsub
  6. 表示される [client-output-buffer-limit pubsub ポリシー] ダイアログボックスで、次の手順を実行します。
    1. パラメーターオプション」の説明に従って client-output-buffer-limit pubsub パラメーターの 3 つの値を変更します。
    2. [OK] をクリックします。