一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中 TLS 优化如何通过性能调优降低高并发下的内存开销

时间:2026-08-22 12:17:49 编辑:袖梨 来源:一聚教程网

降低Nginx高并发HTTPS内存开销的关键是控制TLS连接生命周期和资源分配粒度:调小ssl_buffer_size至4k–8k、ssl_handshake_timeout设为10s、仅启用TLSv1.2+并精简cipher套件、启用shared SSL会话缓存与session tickets、配合limit_conn和合理keepalive参数限制连接数。

降低 Nginx 在高并发 HTTPS 场景下的内存开销,关键不在堆内存扩容,而在控制 TLS 连接的状态生命周期和资源分配粒度——让每次握手更轻、复用更多、异常连接更快释放。

收紧 SSL 缓冲与握手超时

默认每个 SSL 连接预分配 16KB 缓冲区,高频建连时易引发内存抖动。应主动调低:

  1. ssl_buffer_size 设为 4k 或 8k:减小 TLS 记录分片大小,降低握手初期内存占用;
  2. ssl_handshake_timeout 设为 10s(勿用默认 60s):快速中断慢速或异常握手,防止僵尸连接长期持有内存;

精简协议与密码套件

老旧协议和高开销 cipher 会显著增加证书解析、密钥上下文分配及 CPU 计算压力:

  1. 仅启用 TLSv1.2 和 TLSv1.3,禁用 TLSv1.0/1.1;
  2. 剔除含 SHA-1、RC4、CBC 模式的套件,推荐配置:

    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';

  3. 通过 ssl_conf_command 限定协商范围,如:

    ssl_conf_command Curves X25519:secp256r1;

    ssl_conf_command SignatureAlgorithms ecdsa_secp256r1_sha256:rsa_pss_rsae_sha256:rsa_pkcs1_sha256;

双路会话复用 + 共享缓存

避免重复握手是降低内存与 CPU 开销最直接的手段:

  1. 启用 shared session cache:在 http 块中配置 ssl_session_cache shared:SSL:10m;(10MB 可支持约 4 万个会话);
  2. 启用 session tickets:添加 ssl_session_tickets on;,并定期轮换密钥(使用 ssl_session_ticket_key);
  3. 设置合理超时:ssl_session_timeout 4h;,兼顾复用率与内存驻留时间。

限制连接数与长连接行为

防止无效连接持续占位,尤其在短连接密集场景下:

  1. 通过 limit_conn 控制单 IP 并发 TLS 连接数,例如:

    limit_conn_zone $binary_remote_addr zone=conn_per_ip:10m;

    limit_conn conn_per_ip 20;

  2. 调整 keepalive_timeout60–75s,过长易堆积空闲连接;
  3. 设置 keepalive_requests 1000,防止单连接请求过多导致内存泄漏风险。

热门栏目