r - 负载均衡器后面的 R-Shiny 脚本超时
问题描述
我正在 GCP 中的一个实例上测试一个 Shiny 脚本。该实例位于负载均衡器后面,该负载均衡器用作前端,具有静态 IP 地址和 SSL 证书以保护连接。我将 GCP 实例配置为负载均衡器将请求转发到的后端服务的一部分。负载均衡器和实例之间的连接不安全!
问题:通过负载平衡器访问 Shiny 脚本有效,但是在启动连接后的短时间内,客户端的 Web 浏览器屏幕变灰(超时)!!当浏览器屏幕变灰时,我必须重新开始!如果我尝试直接访问 GCP 实例上的 Shiny 脚本(而不是通过负载均衡器),该脚本可以正常工作。我想问题出在负载均衡器上,而不是脚本上。
感谢您对这个问题的任何帮助。
解决方案
上下文:Shiny 使用websocket (RFC 6455)进行持续的客户端-服务器通信。如果出于某种原因,此 websocket 连接断开连接,则用户体验就是所描述的“灰显”。幸运的是 GCP 支持 websocket。 但是,您的负载均衡器似乎设置了意外的 http 超时值。
根据您使用的负载均衡器类型(TCP、HTTPS),可以进行不同的配置。对于他们的 HTTPS 产品:
后端服务超时的默认值为 30 秒。允许的完整超时值范围为 1-2,147,483,647 秒。
考虑在以下任何情况下增加此超时:
[...]
连接升级为 WebSocket。
答: 您应该可以借助此支持文档来增加后端服务的超时时间。
请注意,根据您的配置,可能会涉及更多代理,这可能会使事情复杂化。
或者,您可以尝试通过向 Shiny 应用程序添加心跳机制来防止任何超时。在 GitHub 上的这个问题中讨论了一些这样做的方法。
推荐阅读
- php - PrestaShop 交叉销售产品按销售排序 [PHP MOD]
- javascript - 使用 if 和 else 以及 charAt 循环数组
- c++ - 如何使用 CMake 启用 gdb -g3 调试级别?
- python - 为什么在第 12 行的深度优先搜索中列表(路径)与路径的输出存在差异?
- swift - 如何在 Swift 上使用带有大量 if 和 else 的 Clean 代码
- algorithm - 这是什么类型的问题?帮助分类
- global-variables - 基于文本的游戏中的 C++ 静态变量
- python - 如何在图像上添加肤色表情符号(黑色竖起大拇指,白色竖起大拇指)?
- java - 仅使用数组向数组对象添加新对象,而不创建新数组
- python - 驱动程序的硒问题