前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >一站式解决Rstudio使用问题:常见错误与解决方案汇总

一站式解决Rstudio使用问题:常见错误与解决方案汇总

作者头像
天意生信云
发布2025-03-29 15:30:31
发布2025-03-29 15:30:31
17000
代码可运行
举报
运行总次数:0
代码可运行

Rstudio在使用过程中经常遇到的问题我们已经更新到《常见问题》文档中,本篇就做一下汇总,一次性说清Rstudio问题解决方法。

《常见问题》文档链接:

https://www.yuque.com/dftianyi/tyy/hhikdpbiurntob41#Rkj3P

一、“转圈圈”

现象描述

登录时转圈圈是大内存使用的通病,《R语言实战第三版》已经把这个问题写到书上了,不是服务器的问题哦~

网页提示信息“R is taking longer to start than usual”,直接翻译过来就是“这次启动 R 会比平常更久一点儿”。

原因解释:用户使用Rstudio运行程序,计算过程中产生了大量的中间变量(几十GB,上百GB),在退出Rstudio之前也没有清理掉,那么在退出Rstudio之后,数据会从内存写入硬盘(家目录下的session文件)。下次打开Rstudio的时候,数据又会从硬盘读取到内存,此时这个读写和载入过程会变得很漫长,而且有可能卡死,这就造成了开头转圈圈的那种情况。

解决方法

选择Rstudio & jupyter 服务的用户,登录天意生信云服务器官网,点击“清理Rstudio会话”,等待一会重新打开Rstudio

使用独享服务器和共享服务器的用户按照下面的操作:

1、删除用户上一次会话的session文件

打开 SSH 连接服务器,进入家目录~,然后按以下步骤运行:

查看用户的HOME目录

代码语言:javascript
代码运行次数:0
运行
复制
#############查看用户的HOME目录
getent passwd 用户名 | cut -d: -f6

例如:tycloud用户的Home目录

getent passwd tycloud | cut -d: -f6

删除session文件

代码语言:javascript
代码运行次数:0
运行
复制
######## 删除session文件#######
#  rm -rf /home_path/.local/share/rstudio/sessions/active/*

home_path : 前面查到的用户目录

2、删除R session进程

输入以下命令查询PID进程编号:

代码语言:javascript
代码运行次数:0
运行
复制
rstudio-server active-sessions

返回信息中第一列的PID是进程编号,如果有多个用户的话需要选择自己账户对应的PID。

然后运行以下命令删除进程,注意[PID]是刚刚查到的那个值,比如上图中的5631,需要根据实际情况而定。

代码语言:javascript
代码运行次数:0
运行
复制
rstudio-server kill-session [PID]

如果命令:rstudio-server active-sessions执行后,没有内容,说明Rstudio已经挂掉了,需要重启Rstudio。

rstudio 执行命令:

  • 重启命令 rstudio-server restart
  • 查看状态命令:rstudio-server status
  • 停止命令 rstudio-server stop
  • 启动命令 rstudio-server start

重新打开Rstudio server网页,此时恢复正常,能够正常登录。

有没有使用技巧能避免卡死?

方法一:工作区清爽

分析大数据过程中(内存占用量超过5G以上),每次想要退出Rstudioserver时,先将当前的环境中变量都保存为Rdata,然后运行gc()回收内存,然后再关闭浏览器。下次启动时直接加载Rdata即可恢复变量。

另外,养成良好的编程习惯,对垃圾内存进行回收,避免长期占用。

Rstudio退出(请一定重视,否则可能再次访问时无法打开。)

退出Rstudio最好不要直接关闭网页,否则有可能导致以后登陆Rstudio报错,甚至无法打开。在退出之前进行保存文件

然后清理掉变量

最后退出即可

方法二:运行后台服务

Rstudio的设计不是为了用来跑长时间的大任务的,而是使用Rstudio小数据量调试完代码之后,将其作为后台的任务去运行,把结果输出到文件里面,这样就不存在大量中间变量的问题啦!

Rstudio自带提交后台任务的功能,点击“开始后台任务”的按钮,会出现弹窗,进行脚本以及工作目录的设置、环境变量的设置。设置好之后点击开始!

使用Linux终端运行代码

如果程序使用Rstudio卡住很久了,可以使用Linux终端运行R代码,注意结合日志查看具体运行情况。

代码语言:javascript
代码运行次数:0
运行
复制
# 假设我们要执行的命令是 abc xyz(xyz是命令的参数)

# 使得命令后台运行的方式是:自己命令的前后分别加上nohup以及&
nohup abc xyz &

# 我们再次登录服务器的时候,怎么判断命令的执行状态呢?
# 1. 查看nohup的命令日志 nohup.out文件(推荐)
tail -f nohup.out

# 或者查看进程是否结束
ps -ef | grep abc

# 终止后台运行的进程
## 第一步:查找进程号,把abc换成你的关键字
ps -ef | grep abc
## 第二步:删除进程
kill -9 进程号

二、没有变量,但依旧占用内存

可能是suspended-session-data占用的,有时候点击Rstudio的清理按钮,也无法清理这些数据。

查看suspended-session-data的容量,发现这下面的文件大小刚好和Rstudio的内存占用一样,suspended-session-data文件产生的原因可以看这个:

https://stackoverflow.com/questions/44031205/risk-in-deleting-suspended-session-data

简单来说就是长时间不使用Rstudio的话,其会把变量数据存储磁盘中,产生了suspended-session-data

代码语言:javascript
代码运行次数:0
运行
复制
du -h--max-depth=1 ~/.local/share/rstudio/sessions/active/

三、Unable to connect to service

现象描述

网页提示直接翻译过来就是:无法连接到 RStudio Server 上的 R 会话。无法连接到服务。

解决方法

选择Rstudio & jupyter 服务的用户,登录天意生信云服务器官网

1、首先检查一下磁盘使用率,如果磁盘满了,需要扩容。

2、如果磁盘没有满,Rstudio可能因为某种原因导致退出了,需要重启。

使用独享服务器和共享服务器的用户

遇到登录问题,点击Retry无效,可以登录服务器上查看rsession的情况。top -u shpc_xxx (shpc_xxx改成你自己的用户名)这样看看rsession是否一直在加载数据,或者执行watch free -m命令观察内存变化情况,执行df -h 命令查看磁盘使用情况。如果系统资源紧张,可能会导致RStudio Server无法正常运行。

如果内存和磁盘的使用都没有问题,尝试重新启动Rstudio server:

  • 重启命令 rstudio-server restart
  • 查看状态命令:rstudio-server status
  • 停止命令 rstudio-server stop
  • 启动命令 rstudio-server start

四、Error occurred during transmission

现象描述

在传输过程中发生错误。

该问题产生可能是由于之前关闭Rstudio-server不正常,重新连接时导致上次的文件或记录无法被加载。数据可能已损坏。 可以尝试删除 /home/<user>/.local/share/rstudio文件夹。 使得允许Rstudio再次加载。

登录到服务器

代码语言:javascript
代码运行次数:0
运行
复制
rm -rf /mnt/data/home/<user>/.local/share/rstudio/

删除之后重新启动Rstudio server :rstudio-server restart

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioOmics 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、“转圈圈”
    • 现象描述
    • 解决方法
    • 有没有使用技巧能避免卡死?
  • 二、没有变量,但依旧占用内存
  • 三、Unable to connect to service
    • 现象描述
    • 解决方法
  • 四、Error occurred during transmission
    • 现象描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档