几分钟后 HTTPS 连接停止工作

Posted

技术标签:

【中文标题】几分钟后 HTTPS 连接停止工作【英文标题】:HTTPS connection stops working after a few minutes 【发布时间】:2019-04-09 11:14:38 【问题描述】:

我有以下设置:

Service Fabric 集群运行 5 台机器,多个服务在 Docker 容器中运行 一个开放了 443 端口的公共 IP,转发到运行 Traefik 的服务 Traefik 终止 SSL,并将请求代理到通过 HTTP 请求的服务

这是我得到的行为:

对 https:// 的第一个请求非常非常慢。 Chrome 通常会在超时或“无内容”错误后最终加载它。 Powershell 中的 Invoke-WebRequest 通常只是超时并显示“底层连接已关闭”消息。 但是,一旦加载,我可以刷新内容或再次运行命令,它的响应非常非常快。只要 URL 有正常流量,它就会起作用。 如果我离开一会儿(不确定时间,肯定是几分钟),它就会死去,然后回到起点。

我的问题:

什么会导致 SSL 握手中断或永远持续?这个堆栈中的哪个组件是罪魁祸首? Service Fabric 中的某些内容是否超时?这是Traefik的事情吗?如果它更稳定,我可以切换到 nginx。我们在 IIS 上使用这些相同的证书,我们没有这个问题。

我可以使用 New Relic 之类的东西每分钟不断发送一个 ping 以保持一切正常,但我宁愿弄清楚为什么几分钟后连接就会断开。

调试此问题的最佳方法是什么?我在 Traefik 日志文件中看不到任何内容(在 DEBUG 模式下),实际上当它没有连接时,访问日志中根本没有请求记录。任何可以帮助调试的工具?谢谢!

【问题讨论】:

您是否使用本地集群进行测试? 这是在 Azure.. 【参考方案1】:

所有 5 个节点上的 Traefik 服务是否健康,您可以检查所有 5 个实例的日志吗?如果不是,这可能会导致 Azure 负载均衡器在 Traefik 未侦听的节点之间进行负载均衡,这会导致响应间歇性和缓慢。一旦一个健康的 Traefik 响应,您将获得一个粘性会话 cookie,这将使后续响应更快。您可以为 Traefik 日志启用 ApplicationInsights 监控,以节省您在所有机器上的爬网:https://github.com/jjcollinge/traefik-on-service-fabric#debugging。我还建议在不使用 SSL 的情况下进行测试,以确保 Traefik 可以首先通过 HTTP 正确路由,然后添加 HTTPS。这样你就会知道这与 SSL 配置有关(即正确安装证书、Traefik toml 配置、可信证书等)

【讨论】:

以上是关于几分钟后 HTTPS 连接停止工作的主要内容,如果未能解决你的问题,请参考以下文章

Arduino 使用几分钟后停止工作

反应原生。 Firebase 消息在启动应用程序几分钟后停止工作

Worklight iOS Geofence Native API 在几分钟后停止在后台工作

Elastic Beanstalk CloudWatch 日志流停止工作 – 如何调试

应用程序随机停止接收按键(CGEventTaps)

gta5 停止工作 故障模块名称:clr.dll