首页 > 解决方案 > 负载均衡器后面的 R-Shiny 脚本超时

问题描述

我正在 GCP 中的一个实例上测试一个 Shiny 脚本。该实例位于负载均衡器后面,该负载均衡器用作前端,具有静态 IP 地址和 SSL 证书以保护连接。我将 GCP 实例配置为负载均衡器将请求转发到的后端服务的一部分。负载均衡器和实例之间的连接不安全!

问题:通过负载平衡器访问 Shiny 脚本有效,但是在启动连接后的短时间内,客户端的 Web 浏览器屏幕变灰(超时)!!当浏览器屏幕变灰时,我必须重新开始!如果我尝试直接访问 GCP 实例上的 Shiny 脚本(而不是通过负载均衡器),该脚本可以正常工作。我想问题出在负载均衡器上,而不是脚本上。

感谢您对这个问题的任何帮助。

标签: rgoogle-cloud-platformshiny

解决方案


上下文:Shiny 使用websocket (RFC 6455)进行持续的客户端-服务器通信。如果出于某种原因,此 websocket 连接断开连接,则用户体验就是所描述的“灰显”。幸运的是 GCP 支持 websocket。 但是,您的负载均衡器似乎设置了意外的 http 超时值。

根据您使用的负载均衡器类型(TCP、HTTPS),可以进行不同的配置。对于他们的 HTTPS 产品:

后端服务超时的默认值为 30 秒。允许的完整超时值范围为 1-2,147,483,647 秒。

考虑在以下任何情况下增加此超时:

[...]

连接升级为 WebSocket。

答: 您应该可以借助此支持文档来增加后端服务的超时时间。

请注意,根据您的配置,可能会涉及更多代理,这可能会使事情复杂化。

或者,您可以尝试通过向 Shiny 应用程序添加心跳机制来防止任何超时。在 GitHub 上的这个问题中讨论了一些这样做的方法。


推荐阅读