多くの負荷分散設計では、接続制限は単一フィールドとして扱われます:同時に何接続まで開けるか、という問いです。このモデルは不完全です。保留中の10,000のkeep-alive接続はコストが低いかもしれませんが、1,000の同時新規SSLハンドシェイクはバックエンドCPUを急速に消費します。同じ数値でも、トラフィックの種類によって全く異なるコストが発生します。
接続数と接続レートも同じものではありません。「同時に20,000接続まで開ける」は容量の上限であり、「毎秒10,000の新規接続を開ける」はバーストと接続ストームの制御です。この2つの値を分離しないシステムは、正当なユーザートラフィックを不必要に制限するか、突然の攻撃波からバックエンドを守れません。
TLSトラフィックは個別に考慮しなければなりません。SSL/TLSハンドシェイク操作はCPU負荷が高く、プレーンHTTP接続と同じ制限で管理すると実際の負荷が見えなくなります。特に公開Web、APIゲートウェイ、キャンペーン期間のトラフィックでは、ハンドシェイクレートを独立して制限することでバックエンドCPU消費を制御下に置けます。
キュー動作も多くの場合不透明です。制限を超えたとき、接続はサイレントに破棄されるのか、タイムアウトになるのか、キューで待機するのか、それともクライアントが明確な503を受け取るのか。この動作が見えなければ、インシデント発生時に根本原因が分からず、ユーザーはタイムアウトを見るだけで、運用チームが真の原因を把握するのが遅れます。
TR7プール接続制限は、総接続数、接続レート、セッションレート、SSL負荷、バッファ予算、リトライ動作を独立して制御することで、サイレントな過負荷の代わりに予測可能な容量管理によりバックエンドサービスを保護します。
TR7はプール容量を単一フィールドではなく、接続、レート、SSL、リトライ、バッファ軸で構成されたプロファイル構造で管理します。
単一プロファイルでmaxConn、maxRetries、rateLimitSessions、maxConnRate、maxSessRate、maxSslConn、maxSslRate、maxBufferSizeを定義します。これにより、バックエンドの接続、レート、TLS、メモリ制限を互いに独立して調整できます。
TLSハンドシェイクはCPU負荷が高いため、TR7はmaxSslConnとmaxSslRateを別個の値として管理します。この分離により、総接続数が低く見える場合でもハンドシェイクストームがバックエンドを消耗させるのを防ぎます。
制限プロファイルは一意の名前で定義され、異なるサービスプールに適用できます。本番、ステージング、カナリア、テナント別の容量ポリシーをすべて単一のプロファイルモデルで管理できます。
maxRetriesは一時的な障害時にバックエンドへの接続を何回リトライするかを定義します。maxBufferSizeはスロークライアントやスローバックエンドのシナリオで接続ごとのメモリ消費を制御します。
TR7プール接続制限は、接続ストーム、TLS負荷、セッションバースト、メモリ圧力に対してバックエンドサービスを制御された方法で制限します。
maxConnはプールごとの同時オープン接続数の上限を設定し、デフォルト値は20,000、上限は1,000,000です。この値は、バックエンドが同時に処理できる接続数をADC層で正確にエンコードします。制限に達すると、新規接続はキュー動作または拒否フローの対象となります。
maxConnRateは毎秒開ける新規TCP接続数を制限し、デフォルト値は10,000です。総接続数とは異なり、このフィールドは接続が開かれるレートを制御します。接続ストーム、アグレッシブなスキャン、誤動作するロードテストによるバースト時にバックエンドが圧倒されるのを防ぎます。公開サービスへのバースト保護の重要な制御です。
maxSessRateは新規セッションへの毎秒の上限を適用し、デフォルト値は10,000です。keep-alive接続の再利用と繰り返し新規セッションを開くことは異なるコストを持ちます。この区別は特に、cookie ベースのセッション開放ストームやアプリケーションセッションを消耗させるボット動作に対して有効です。
rateLimitSessionsは新規接続スロット割り当てへの別個の毎秒制御を提供し、デフォルト値は5,000です。より細かい粒度で新規接続の受け入れ動作を管理するために使用されます。突然の接続バースト時にプールが制御された容量で進むのを助けます。
maxSslConnはアクティブなSSL/TLS接続への別個の同時接続制限を定義し、デフォルト値は5,000です。TLS接続はCPU、メモリ、暗号処理コストのためプレーン接続とは異なる扱いが必要です。この制限はTLS側のバックエンドの実際の容量をより正確に反映します。
maxSslRateは毎秒起動できるSSL/TLSハンドシェイク数を制限し、デフォルト値は2,000です。ハンドシェイク操作はRSAまたはECDSAの使用、キーサイズ、CPU容量によって高いコストが発生します。このフィールドはTLSハンドシェイクストームがバックエンドCPUを消耗させるのを防ぎます。
maxBufferSizeは接続ごとに利用可能なバッファサイズをKB単位で設定し、デフォルト128 KB、範囲は16〜256 KBです。スロークライアント、スローリーダー、大きなボディを持つリクエストに対してこの値でメモリ消費を制御します。Slowlorisに似た動作とメモリ圧力への運用保護を提供します。
maxRetriesは障害時にバックエンド接続を何回リトライするかを定義し、デフォルト値は3、上限は1,000です。低い値は高速なエラー返却を提供し、高い値は一時的なネットワークの揺らぎに対する耐障害性を向上させます。ただし過剰なリトライは問題を抱えるバックエンドに追加負荷をかけるため慎重に選ぶ必要があります。
制限プロファイルは一意の名前で定義され、複数のプールに割り当てられます。単一プロファイルを編集すると、それに紐付くすべてのプールの接続動作が変更されます。このモデルにより各サービスプールを個別に設定する必要が減ります。本番、テスト、キャンペーン、テナント別プロファイルをそれぞれ独立して管理できます。
制限を超えると、接続は定義された深さまでキューで待機できます。キューが埋まると、クライアントはサイレントタイムアウトではなく明確なエラーを受け取ります。運用チームは503などの明示的なエラーシグナルにより容量の上限に達したことをより迅速に把握できます。問題はユーザー側の曖昧な待機ではなく測定可能な容量イベントとなります。
プール接続制限は、デフォルト値、ゼロ無効化動作、グローバル/フロントエンド/プール生成、メモリ予算とともに計画する必要があります。
デフォルトモデルではmaxConn 20K、maxRetries 3、rateLimitSessions 5K、maxConnRate 10K、maxSessRate 10K、maxSslConn 5K、maxSslRate 2K、maxBufferSize 128 KBが使用されます。これらは出発点です。実際の調整はバックエンド容量、TLSコスト、トラフィックパターンに応じて行う必要があります。
すべての制限フィールドは最小値として0を受け付けます。これは特定のコントロールを無効化するか無制限として動作させるシナリオで使用できます。ただし本番環境では0の設定は意識的に行う必要があります。そうでなければ想定していた保護が解除されます。
maxConnは最大1,000,000まで設定できます。これにより非常に高密度なkeep-aliveや接続プールのシナリオに柔軟に対応できます。それでも実際の容量はこの数値だけで決まるものではなく、ファイルディスクリプタ、メモリ、CPU、TLSコスト、バックエンドの制限をすべて合わせて考慮する必要があります。
maxBufferSizeは接続ごとのメモリ消費に直接影響します。低い値はメモリ保護を高めますが、大きなボディやスローストリームを持つアプリケーションで互換性の問題が生じることがあります。16〜256 KBの範囲により、セキュリティとアプリケーションのニーズのバランスを取ることができます。
プロファイル値はグローバル、フロントエンド、プールレベルの接続動作に反映されます。この分離により、デバイス全体の容量と特定プールの容量を独立して管理できます。大規模な展開では総ADC容量と単一プール容量を混同してはなりません。
SSL接続制限はTLSバインド動作に紐付きます。maxSslConnなどの値によりTLS接続をプレーン接続から独立して管理できます。これはTLSトラフィックが多い公開サービスでCPU予算を守るために重要です。
通常時に20K接続プロファイルで稼働するEコマースプラットフォームは、キャンペーン期間中により高い接続プロファイルに切り替えられます。同じプールを維持したまま、制限プロファイルを変更するだけでキャンペーントラフィックに対応できます。
銀行は内部APIプールで高い総接続数を許可しながら、SSL接続数とハンドシェイクレートをより狭く保つことができます。この構造でTLSコストを制御し、突然のハンドシェイク負荷からバックエンドCPUを保護します。
インターネットに面したWebアプリケーションでは、ボットスキャンや誤動作するクライアントが短時間で多数の接続を開く可能性があります。TR7はmaxConnRateとrateLimitSessionsにより新規接続レートを制限し、バックエンドを接続ストームから保護します。
読み取りが遅いクライアントは接続ごとのバッファ使用量を増加させます。TR7はより低いmaxBufferSizeプロファイルでこのトラフィックのメモリ消費を制限し、他のユーザーが引き続きサービスを受けられるようにします。
接続ストーム、TLS負荷、スロークライアントのメモリ圧力に対する8軸の接続制限プロファイル。お客様のサービスでライブセットアップをご案内します。