如何利用ssl_session_cache指令优化SSL会话重用,大幅减少握手延迟?
- 内容介绍
- 文章标签
- 相关推荐
本文共计787个文字,预计阅读时间需要4分钟。
启动 `ssl_session_cache` 是 Nginx 中最直接、最有效的 SSL 性能优化手段,实测可将单次 TLS 握手耗时降低约 40%,核心在于跳过密钥交换与证书验证环节,将完整握手(约 3 个 RTT)压缩为简短握手(仅 1-2 个 RTT)。
选对缓存类型:shared 是生产环境唯一推荐选项
OpenSSL 内置缓存(builtin)仅限单 worker 进程使用,多进程下复用率极低;off 和 none 则完全禁用重用。真正可用的是共享内存缓存:
-
语法必须写成
shared:SSL:10m—— 名称(SSL)和大小(10m)缺一不可,名称用于日志和监控标识 - 10MB 可缓存约 4 万个会话(按每个会话 ~250 字节估算),适合日均百万级 HTTPS 请求的站点
- 若并发连接峰值超 10 万,建议调至
20m或更高,避免缓存满导致新会话被挤出
设准超时时间:5–10 分钟是兼顾复用率与内存安全的黄金区间
ssl_session_timeout 不是“越长越好”。
本文共计787个文字,预计阅读时间需要4分钟。
启动 `ssl_session_cache` 是 Nginx 中最直接、最有效的 SSL 性能优化手段,实测可将单次 TLS 握手耗时降低约 40%,核心在于跳过密钥交换与证书验证环节,将完整握手(约 3 个 RTT)压缩为简短握手(仅 1-2 个 RTT)。
选对缓存类型:shared 是生产环境唯一推荐选项
OpenSSL 内置缓存(builtin)仅限单 worker 进程使用,多进程下复用率极低;off 和 none 则完全禁用重用。真正可用的是共享内存缓存:
-
语法必须写成
shared:SSL:10m—— 名称(SSL)和大小(10m)缺一不可,名称用于日志和监控标识 - 10MB 可缓存约 4 万个会话(按每个会话 ~250 字节估算),适合日均百万级 HTTPS 请求的站点
- 若并发连接峰值超 10 万,建议调至
20m或更高,避免缓存满导致新会话被挤出
设准超时时间:5–10 分钟是兼顾复用率与内存安全的黄金区间
ssl_session_timeout 不是“越长越好”。

