在负载下,我们的 Apache2 实例有时似乎停止响应 SSL 请求。
我们有一个运行 Apache 2.2 w/OpenSSL 的 Windows Server 2003。它配置了 mod_jk 连接器版本 1.2.32,它平衡了 Tomcat 6 的两个实例。
Apache2 被配置为接受 :80 上的请求并使用 mod_rewrite 重定向到 :443,效果很好。(这在以后很重要)
我们有一个外部进程,它经常调用通过 mod_jk 映射的 URL。该进程配置不当,最初将其请求发送到 http (:80),然后被重定向到 https (:443),导致服务器受到双重打击。这意味着 access.log 将显示两个请求,一个具有 302 状态(从 :80 请求重定向),然后是 200 状态(来自 :443 请求)。
最终,access.log 不再显示随后的“status 200”消息,仅显示 302(重定向)。通过浏览器访问 https URL 也确认 Apache 没有响应。我们的 Monitis 警报说:“严重 - 无法建立 SSL 连接”。此外,我们的 mod_jk.log 在失败时停止记录请求。需要注意的是,Apache 在 ssl 请求失败的同时继续回复所有 http 请求并发送 302 重定向。
通过http直接访问两个tomcat实例中的每一个都成功,没有任何问题。
我们重新启动了 Apache2 服务,它立即解决了问题,一切又开始正常运行。
这个谜题中有很多活动的部分,我不确定罪魁祸首。我怀疑 SSL 可能存在问题,尽管当时我没有通过 SSL 测试非 tomcat URL。它也可能与 mod_jk 相关。谢谢阅读。