4. 资源配额模型概述:CPU、内存、连接数、QPS 配额的定义与分配策略

在云原生网关的 TLS 观测体系中,资源配额模型是连接基础设施容量与业务服务质量的核心桥梁。错误的配额配置会直接导致 TLS 握手延迟飙升、连接耗尽或证书验证超时。本章定义四种基础资源配额——CPU、内存、连接数、QPS,并阐述其分配策略与观测关联。

4.1 四种核心配额的定义与度量单位

配额类型 度量单位 TLS 观测关联点 典型瓶颈表现
CPU mCPU(毫核,1 核 = 1000m) TLS 握手阶段非对称解密、会话票据生成 握手延迟 P99 升高、TLS 超时重试
内存 MiB / GiB 会话缓存(Session Cache)、证书链加载、OCSP Stapling 响应缓存 OOMKill、会话复用率骤降、证书过期未刷新
连接数 并发连接数(Count) ESTABLISHED 状态连接、TLS 握手队列深度 连接拒绝、半连接队列溢出、TLS 重协商风暴
QPS 每秒请求数(Count/s) TLS 新建握手速率、应用层吞吐 限流触发、证书验证失败率上升
观测提示:在 Kubernetes 环境中,CPU 和内存配额通常通过 resources.requests 和 resources.limits 定义;连接数和 QPS 配额则依赖网关自身的限流插件(如 Envoy 的 local_rate_limit 或 Kong 的 rate-limiting 插件)实现。

4.2 配额分配策略:静态预留与动态弹性

合理的配额分配需要平衡资源利用率与安全水位。以下三种策略在 TLS 观测场景中最为常用:

  1. 静态预留(Static Reservation):为每个网关 Pod 固定分配 CPU 和内存上限。适用于 TLS 证书固定、会话模式稳定的场景。缺点是应对突发 TLS 握手洪峰时容易触发限流。
  2. 动态弹性(Dynamic Elasticity):基于 HPA(Horizontal Pod Autoscaler)或 VPA(Vertical Pod Autoscaler)自动调整配额。观测指标通常选用 tls_handshake_latency_p99 或 tls_session_cache_usage_ratio。
  3. 优先级抢占(Priority Preemption):将 TLS 控制面流量(如证书轮换、OCSP 请求)与数据面业务流量分离,为控制面预留独立配额,避免证书更新时挤占业务握手资源。
关键公式:安全水位 = (当前配额使用量 / 配额上限) × 100%。当安全水位超过 80% 时,TLS 握手延迟开始出现非线性增长;超过 95% 时,连接拒绝和握手失败概率显著上升。

4.3 配额模型与延迟水位的映射关系

下图展示了四种配额耗尽时对 TLS 握手延迟水位的典型影响路径:

资源配额耗尽与 TLS 延迟水位映射 资源配额耗尽 → TLS 延迟水位上升路径 CPU 配额耗尽 内存配额耗尽 连接数配额耗尽 QPS 配额耗尽 非对称解密排队延迟 会话缓存逐出 + 全握手 握手队列溢出 + 重试 限流触发 + 请求丢弃 TLS 握手延迟水位上升 P99 延迟突破基线 → 触发告警 观测建议: 当任意配额使用率超过 80% 时,应提前扩容或调整限流阈值;超过 95% 时,TLS 握手失败率将呈指数级增长。

4.4 典型分配策略配置示例

以下是一个基于 Envoy 网关的配额分配 YAML 示例,展示了如何将 CPU/内存配额与连接数/QPS 限流结合:

apiVersion: v1
kind: Pod
metadata:
  name: tls-gateway-pod
spec:
  containers:
  - name: envoy
    image: envoyproxy/envoy:v1.28
    resources:
      requests:
        cpu: "2000m"        # 预留 2 核用于 TLS 握手
        memory: "4Gi"       # 预留 4GiB 用于会话缓存
      limits:
        cpu: "4000m"        # 最大 4 核,防止 CPU 抢占
        memory: "8Gi"       # 最大 8GiB,避免 OOM
    env:
    - name: MAX_CONNECTIONS
      value: "10000"        # 最大并发连接数
    - name: MAX_TLS_HANDSHAKE_QPS
      value: "5000"         # 每秒最大 TLS 新建握手数
避坑指南:不要将 CPU limits 设置得过高(如超过 8 核),否则在 TLS 握手洪峰时会导致节点 CPU 软锁定,反而加剧延迟。建议 CPU limits 不超过 requests 的 2 倍。

4.5 配额分配策略对比矩阵

策略 适用场景 TLS 观测指标 风险
静态预留 证书固定、会话模式稳定 CPU 使用率、内存使用率 资源碎片、突发流量丢包
动态弹性 流量波动大、多租户场景 tls_handshake_latency_p99、session_cache_usage 扩容滞后、冷启动 TLS 延迟
优先级抢占 证书轮换频繁、OCSP 依赖强 control_plane_cpu_usage、ocsp_response_time 配置复杂、控制面抢占数据面

在实际生产环境中,推荐采用静态预留 + 动态弹性的混合策略:为 TLS 控制面操作(证书加载、OCSP 刷新)预留固定配额,同时为数据面握手流量设置 HPA 自动扩缩容,从而在保障 TLS 安全水位的前提下最大化资源利用率。