SSL 中的 Apache Server Hello 速度慢

SSL 中的 Apache Server Hello 速度慢

我正在尝试调试 Apache 中的 SSL 问题。我使用 Wireshark 捕获数据包,看到客户端 hello 消息发出,大约 10 秒后,我收到服务器 hello。建立 SSL 连接后,后续 HTTPS 请求会更快。

我使用 /dev/urandom 来获取熵,我认为我有足够的可用资源。我的 CPU 负载几乎为零,但我每秒收到大约 10 个请求。

我在 Ubuntu 10.04 上使用 Apache 2.2.14 中的常规设置。我的证书是来自 GoDaddy 的 SAN 证书。

我应该采取什么步骤来找出为什么我的服务器需要这么长时间才能通过 SSL 做出响应?HTTP 很快速,但 HTTPS 却非常慢。

编辑:

下面是一张显示客户端 hello 的图像,大约 10 秒后,显示服务器 hello:

在此处输入图片描述

答案1

增加 MaxClients 很可能会解决这个问题。

请注意,MaxClients 的默认值为 256,因此如果此更改解决了问题,则您可能将 MaxRequestWorkers 设置为更低的值。请注意,MaxClients 是弃用的名称,而 MaxRequestWorkers 是新名称,因此如果您的 MaxRequestWorkers 较小,然后在配置中添加了 MaxClients,则 MaxClients 值将覆盖您的较低 MaxRequestWorkers 值,从而解决问题。

至于为什么这种情况只发生在 HTTPS 上,我怀疑是因为浏览器客户端在 HTTPS 上更积极地保持连接活动(可以理解)。因此更容易耗尽可用的客户端。

答案2

我将 apache 配置中的 MaxClients 增加到 256,重新加载 apache,情况得到了显著改善。我很难相信这是问题所在,因为 HTTP 一如既往地快速,但 HTTPS 却很慢。

apache2ctl status报告“当前正在处理 185 个请求”,而我进行更改之前 MaxClients 设置为 150。所以这有点道理,但 HTTP 又为什么会这么快呢?

cat /proc/sys/kernel/random/entropy_avail报告190。

Apache 2.2.14 是适用于 Ubuntu 10.04 的最新版本的 Apache。

相关内容