Nginx 保持活动:同时进行 SSL 握手需要 25 秒

Nginx 保持活动:同时进行 SSL 握手需要 25 秒

谢谢阅读 :)

这是一个非常困难的问题,希望收到任何想法或建议来解决这个问题。

问题:用户登录时,应用程序会同时发起约 20 个 API 请求。第一个请求将进行 SSL 握手,然后在第 10 到第 13 个请求左右,我看到两个请求同时发起 SSL 握手,每次握手都会卡住,并且需要超过 25 秒才能重复。对于用户来说,这个问题表现为 30 秒的登录时间。

设置:我有一个基于硬件的负载均衡器和大约 8 个 nginx 节点的设置,它们为在同一节点上运行的 Java 应用程序提供反向代理。FE 是一个 SPA,流经 nginx 的所有流量都是动态内容。

额外细节

  • 将 keepalive 从 65 秒调整到 10 秒,可将总 SSL 握手时间从 >30 秒(即 FE 超时)减少到 25 秒,因此该问题在某种程度上与 keepalive 相关。
  • 该问题仅存在于 FF 上,现已蔓延至 Safari。
  • 将 nginx 升级到最新 LTS
  • 负载均衡器正在循环分配请求。
  • Nginx 日志确实没有提及该问题。
  • API 请求是有序的,通常会影响相同的 3 个请求中的 2 个。

相关内容