Shiny Server部署的Shiny应用远慢于本地,求排查与优化方法
我的Shiny应用性能优化求助
我最近开发了一个Shiny应用,核心功能是根据UI输入的变化绘制台湾350余个乡镇的多边形,应用的源代码在我的GitHub仓库的app.R文件中。由于每次UI输入变化后,乡镇对应的数值都会发生改变,几乎没办法使用leafletProxy来做局部更新,现在我遇到了棘手的性能问题,尤其是部署到Shiny Server之后,情况比本地运行糟糕很多。
具体问题表现
- 本地运行时:修改UI选项后,地图大概10秒就能加载完成,体验还算顺畅。
- 部署到服务器后:不管是应用初始化,还是每次更改输入参数,绘制地图都需要约30秒,耗时远超本地环境;而且Shiny Server在计算过程中还频繁断开连接,界面会显示类似这样的断开提示:

- 断开连接时,查看
/var/log/shiny-server.log会看到如下日志:
[INFO] shiny-server - Error getting worker: Error: The application exited during initialization.
我的困惑
让我百思不得其解的是,我的2015年初款MacBook Air配置明明更低(1.6 GHz Intel Core i5、8 GB 1600 MHz DDR3),但运行应用的性能反而优于拥有4 vCPU和15 GB RAM的Google Compute Engine虚拟机,这到底是为什么?
求助方向
我想请教各位:
- 该如何排查Shiny Server性能变差的原因?
- 有没有合适的代码重构思路来优化这个应用的性能?
之前我也参考过Stack Overflow上关于Leaflet R大地图性能问题的讨论,但还是没能解决我的问题。
内容的提问来源于stack exchange,提问作者ytu
相关产品推荐
相关产品推荐

