You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shiny Apps部署时出现Out of Memory错误,文件总大小远小于1GB

解决Shiny Apps部署时的Out of Memory(OOM)错误

核心问题定位

部署时上传Documents目录下所有文件,即便总大小没超1GB,但部署工具扫描目录、打包的过程可能占用了过多内存,最终触发OOM——问题大概率出在打包阶段的内存消耗,而非最终包的大小。

具体解决方案

1. 精准控制部署打包的文件范围

创建.Rbuildignore文件放在项目根目录,写入要排除的无关文件/目录规则,示例:

^Documents$
^\\.Rproj\\.user$
^\\.DS_Store$
^.*\\.log$

或者用shinyapps.yml配置文件明确指定仅打包必要文件,示例:

deploy:
  files:
    - app.R
    - data/
    - www/

这样部署工具只会处理你指定的内容,避免扫描大目录导致内存过载。

2. 部署前彻底清理R会话内存

在执行部署命令前,先清理当前R会话的所有无用对象和缓存:

rm(list = ls(all.names = TRUE))
gc(full = TRUE)
.rs.restartR() # RStudio用户可以重启会话,彻底清空内存

确保部署时R会话处于干净状态,减少额外内存占用。

3. 清理部署工具的缓存和临时文件

  • 运行rsconnect::purgeApp("<你的应用名称>")清理rsconnect包的旧缓存
  • 手动删除本地~/.rsconnect目录下的临时文件,避免旧缓存堆积占用内存

4. 优化应用代码的内存使用

即便文件总大小只有20KB,应用启动或运行时的数据处理也可能触发内存峰值:

  • 延迟加载数据:仅在用户通过下拉选单选择文件后,再加载对应数据,不要在应用启动时一次性加载所有文件
  • 用更高效的数据结构(比如data.table替代data.frame),降低内存占用

5. 本地模拟打包排查问题

先在本地运行rsconnect::bundleApp()生成部署包,观察打包过程中的内存变化,确认是打包阶段还是部署后的运行阶段导致的OOM,再针对性解决。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:16:04