调整 HTTPS 的 Apache KeepAlive 超时

调整 HTTPS 的 Apache KeepAlive 超时

我的网站强制使用 HTTPS,首次加载平均时间为 3-5 秒。得益于缓存,重复加载时间为 0.8 秒。

我的服务器上的 SSL 协商需要 150-300 毫秒,所以我希望尽可能频繁地保持每个连接处于活动状态,以防止延迟。

SSLSessionCache 设置为默认的 300 秒。

Apache KeepAlive 超时最近从 5 秒降低到 2 秒。

这一变化导致服务器平均负载明显下降(平均 5% 而不是平均 10%),但我想知道,如果首次加载时间为 3-5 秒,这是否也会导致首次加载时间变慢?这是否意味着每次超过 2 秒超时时都必须再次执行 SSL 协商?

是平均负载稍高一些、SSL 协商较少(但休眠 httpd 任务较多)更好,还是平均负载较低、SSL 协商较多更好?

我们确实有足够的 CPU 和内存资源可用。因此最终的问题是,什么才能为我们的查看器带来最佳性能?将 KeepAlive 超时提高到 3-5,还是将其保持在 2?

谢谢!

答案1

关于服务器负载:您没有说明这是什么操作系统。对于大多数版本的 Unix(包括 Linux),只要负载小于 CPU 数量,那么您可能不必担心。在这种情况下,每个进程都可以停留在 CPU 中,只要它可以在那里做有用的事情(或多或少)。但是当有一个进程队列等待进入 CPU 时,操作系统会在任务准备好之前中断它们 - 当这种情况发生时,您的吞吐量开始下降。

(我以前从未见过以百分比表示的负载——这从何而来?)

关于页面加载时间:服务器日志不是查看的地方。如果你想知道这是否有影响,那么你需要在浏览器中查看页面加载瀑布图(Chrome 中的开发人员工具、Firefox 中的 Firebug 或使用在线检查器,例如平多姆- 如果您在本地测试,请记住使用代理来增加延迟。您正在寻找对您的站点的请求之间的间隙大于 keepAliveTimeout。

根据我的经验,间隔超过 1 秒非常这种情况很少见,即使在非常慢的网络上也是如此。如果确实发生这种情况,则要么是由于显式延迟(例如,在幻灯片中延迟加载新图像),要么是由于页面中的病理性故障(例如,从非常慢的位置检索非常大的阻塞 javascript)(甚至更罕见)。

(好的,所以我们实际上是在寻找同一套接字上的请求之间的间隙 - 但这很难形象化)。

相关内容