核心是缓存容量、超时时间与会话票据需匹配真实流量特征;shared缓存须置于http块顶层,禁用builtin单独使用;需按每秒新建tls会话数计算缓存大小,启用并轮换session tickets,超时时间应依业务场景差异化设置。

核心是让缓存容量、超时时间与会话票据协同匹配真实流量特征,而不是单纯调大数值。
缓存必须声明在http块顶层
shared缓存要跨worker进程共享,只能写在http { }最外层,和server块并列。写进某个server块里,它就只对该域名局部生效,且各worker无法互通——复用率基本归零。
- 正确示例:
http { ssl_session_cache shared:SSL:20m; ssl_session_timeout 10m; } - 禁用
builtin单独使用:每个worker自己维护小缓存,高并发下请求随机分发,命中几乎为零 - Windows系统不支持shared,只能设
worker_processes 1+ssl_session_cache builtin:1024,并关闭tickets
按真实新建会话速率算大小
不是看QPS,而是统计每秒新建TLS会话数($ssl_session_reused日志中值为n的连接)。静态资源或WSS场景下,这个值常是QPS的2–5倍。
抓取并分析 OpenClaw JSONL 会话日志,重建并回填代理记忆文件。适用于:(1) 模型切换后记忆不完整,(2) 验证记忆覆盖度,(3) 重建丢失记忆,(4) 通过 cron/heartbeat 自动同步每日记忆。支持简单提取及基于 LLM 的叙事摘要,并自动清理敏感信息。
- 公式:缓存大小(MB)≈ 新会话数/秒 × 超时(秒) × 0.5KB ÷ 1024
- 例如:CDN回源峰值3500 new/sec,超时设600秒(10分钟),需约820MB → 实际可配
shared:SSL:512m+ tickets兜底 - 启用OCSP Stapling或长证书链时,单条开销可达2–3KB,需按实际占用上调
必须启用session tickets并定期轮换密钥
shared缓存满后,新连接直接退化为全握手。tickets是无状态兜底,客户端自行携带加密票据,天然支持跨worker、跨重启、跨机器(配合密钥同步)。
- 开启:
ssl_session_tickets on - 指定密钥:
ssl_session_ticket_key /etc/nginx/ssl/ticket.key(必须是二进制文件,至少32字节,可用openssl rand 48 > ticket.key生成) - 建议每月轮换一次:生成新key后reload Nginx,旧ticket仍可解密,新连接自动用新密钥
超时时间要贴合业务访问节奏
静态资源、WSS、API网关的复用窗口差异很大,不能统一设4小时。
- 前端静态资源(JS/CSS/图片):浏览器重连多在5–10分钟内,
ssl_session_timeout 5m–10m更合理 - WSS连接:弱网重连集中在60–180秒,建议
3m或5m;长保活白板类可设10m,但缓存要同步加大 - API网关:用户停留时间长,
4h更稳妥 - 超时过长会导致失效会话长期占槽,降低新鲜度和命中率










