加载大型 seurat 时 Rstudio 服务器崩溃 object

Rstudio server crashes when loading large seurat object

我正在使用最新的 bioconductor_docker r-studio 服务器 (link) 我想加载一个 seurat object (size = 1.9GB) like

library(Seurat)
mca <- readRDS(<path_2_seurat_file>)

但我收到错误消息:

19 Jul 2021 09:20:57 [rsession-rstudio] ERROR session hadabend; LOGGED FROM: rstudio::core::Error {anonymous}::rInit(const rstudio::r::session::RInitInfo&) src/cpp/session/SessionMain.cpp:675

我认为这个错误可能是由于某些内存使用限制造成的:

  1. 我可以在我的计算机上的 r-studio 上加载此数据(即使 docker 容器是 运行)。 docker容器和我的电脑(MacOS Cathalina.10.15.7)之间的Rsession-info是相似的。
  2. 我可以在 rstudio-server(docker 容器)上加载较小的 seurat object。

所以我尝试运行 docker 容器参数 -it --memory="8g" 但它并没有解决问题。

你知道这个问题的任何解决方案或知道我如何找到解决方案吗?


以下是关于 session 的补充信息:

Rstudio-server版本:版本1.4.1717

会话信息:

R version 4.1.0 (2021-05-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 20.04.2 LTS

Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
 [6] LC_MESSAGES=C              LC_PAPER=en_US.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] SeuratObject_4.0.2 Seurat_4.0.3      

loaded via a namespace (and not attached):
  [1] nlme_3.1-152          matrixStats_0.59.0    spatstat.sparse_2.0-0 RcppAnnoy_0.0.18      RColorBrewer_1.1-2    httr_1.4.2           
  [7] sctransform_0.3.2     tools_4.1.0           utf8_1.2.1            R6_2.5.0              irlba_2.3.3           rpart_4.1-15         
 [13] KernSmooth_2.23-20    uwot_0.1.10           mgcv_1.8-36           DBI_1.1.1             lazyeval_0.2.2        colorspace_2.0-2     
 [19] tidyselect_1.1.1      gridExtra_2.3         compiler_4.1.0        cli_3.0.0             plotly_4.9.4.1        scales_1.1.1         
 [25] lmtest_0.9-38         spatstat.data_2.1-0   ggridges_0.5.3        pbapply_1.4-3         goftest_1.2-2         stringr_1.4.0        
 [31] digest_0.6.27         spatstat.utils_2.2-0  pkgconfig_2.0.3       htmltools_0.5.1.1     parallelly_1.26.1     fastmap_1.1.0        
 [37] htmlwidgets_1.5.3     rlang_0.4.11          rstudioapi_0.13       shiny_1.6.0           generics_0.1.0        zoo_1.8-9            
 [43] jsonlite_1.7.2        ica_1.0-2             dplyr_1.0.7           magrittr_2.0.1        patchwork_1.1.1       Matrix_1.3-4         
 [49] Rcpp_1.0.7            munsell_0.5.0         fansi_0.5.0           abind_1.4-5           reticulate_1.20       lifecycle_1.0.0      
 [55] stringi_1.6.2         MASS_7.3-54           Rtsne_0.15            plyr_1.8.6            grid_4.1.0            parallel_4.1.0       
 [61] listenv_0.8.0         promises_1.2.0.1      ggrepel_0.9.1         crayon_1.4.1          miniUI_0.1.1.1        deldir_0.2-10        
 [67] lattice_0.20-44       cowplot_1.1.1         splines_4.1.0         tensor_1.5            pillar_1.6.1          igraph_1.2.6         
 [73] spatstat.geom_2.2-0   future.apply_1.7.0    reshape2_1.4.4        codetools_0.2-18      leiden_0.3.8          glue_1.4.2           
 [79] data.table_1.14.0     png_0.1-7             vctrs_0.3.8           httpuv_1.6.1          gtable_0.3.0          RANN_2.6.1           
 [85] purrr_0.3.4           spatstat.core_2.2-0   polyclip_1.10-0       tidyr_1.1.3           scattermore_0.7       future_1.21.0        
 [91] assertthat_0.2.1      ggplot2_3.3.5         mime_0.11             xtable_1.8-4          later_1.2.0           survival_3.2-11      
 [97] viridisLite_0.4.0     tibble_3.1.2          cluster_2.1.2         globals_0.14.0        fitdistrplus_1.1-5    ellipsis_0.3.2       
[103] ROCR_1.0-11

更新 1

尝试读取 cell_data_set object 时,我现在遇到与之前相同的错误 + 另一个错误。

library(monocle3)
cds <- readRDS(<path_to_cell_data_set_file>)

19 Jul 2021 12:50:10 [rsession-rstudio] ERROR session hadabend; LOGGED FROM: rstudio::core::Error {anonymous}::rInit(const rstudio::r::session::RInitInfo&) src/cpp/session/SessionMain.cpp:675

19 Jul 2021 12:50:10 [rsession-rstudio] ERROR system error 2 (No such file or directory) [path:/home/rstudio/.local/share/rstudio/sessions/active/session-975447f0/suspended-session-data/search_path/search_path_elements]; OCCURRED AT rstudio::core::Error rstudio::core::FilePath::openForRead(std::shared_ptrstd::basic_istream<char >&) const src/cpp/shared_core/FilePath.cpp:1427; LOGGED FROM: void rstudio::r::session::{anonymous}::reportDeferredDeserializationError(const rstudio::core::Error&) src/cpp/r/session/RInit.cpp:63

我也检查(使用 file.exists())并且文件 <path_to_cell_data_set_file> 退出。

经过一番研究后,我发现 如何为 docker 容器分配更多内存。

我认为通过向 docker run 命令添加 -m 8g-it --memory="8g" 足以增加内存限制。然而,输入docker stats后,我发现我的内存限制卡在了2GB。

我按照此 link 上的说明进行操作,这导致我在 > docker > 首选项 > 资源 > 内存中增加了内存限制。

现在一切都像发条一样运转。