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 limit
、soft limit
、soft seconds
のオプションがあります。
hard limit
:Pub/Sub クライアントの出力バッファーが、hard limit
に指定されたバイト数に達するか超えた場合 、クライアントは直ちに切断されます。soft limit
とsoft seconds
:soft seconds
に指定された秒数より長い期間、Pub/Sub クライアントの出力バッファーがsoft limit
に指定されたバイト数に達するか超えた場合、クライアントは切断されます。
ApisaraDB for Redis では、hard limit
、 soft limit
、soft seconds
のデフォルト値は、それぞれ 33554432 バイト (32 MB)、8388608 バイト (8 MB)、60 秒です。 ビジネスニーズとクライアントの能力に合わせて値をカスタマイズできます。