admin
发布于 2024-07-21 / 46 阅读
0

Linux使用RstudioServer为什么感觉有些卡

西柚云广告图.png

倘若您在进行生物信息分析时,自己的电脑频繁出现内存不足的报错,环境问题也总是让您束手无策,那不妨来瞧瞧我们的生物信息专用服务器。其拥有超多核的 CPU 与超大内存,而且可以 7*24 小时不间断运行,您无需有任何顾虑。现在注册就能免费体验 5 小时,快来尝试一下!

一.背景

很多老师和同学使用Rstudio的时候,会觉得Rstudio很卡,高性能服务器的体验甚至还不如自己电脑,造成这种情况的原因有很多,下面我将为大家分析一下情况,同时文章后面也会为大家准备相应解决方案。

二.情况

2.1情况一(Rstudio Server的设计缺陷)

我们服务器使用的是Rstudio Server,和家用办公电脑使用的Rstudio是不一样的

RStudio Server的信息传递链为:RSession -> C++ -> Java -> WebSocket -> html+js

RStudio Server的通讯过程,其中就包含了许多rpc请求

(1). web界面上的js会向Java发送一个rpc请求,Java如果处理不过来,该请求就会阻塞,直至超时;

(2). web界面判断未完成的任务,还会定期发送rpc/event作为心跳,与Java保持沟通;

(3).RSession执行完后返回给c++,然后c++通过event通知Java,Java等待下次rpc/event时就会将结果呈现到web界面;

我们可以看出,RStudio目前的架构很糟糕,这种架构本身就是具有高度阻塞风险的,所以如果一旦RStudio Server界面卡顿,有以下几项措施可以尝试下:

(1)多刷新几次(千万不要整体刷新,局部刷新界面上的模块就好了),有可能Java Web阻塞了界面中的某项请求,刷新一下就能出来;

(2)RSession可能执行死掉了,重启RSession,或者直接到服务器上kill掉RSession;

2.2情况二(占用缓存过大)

同学们使用Rstudio Server时应该经常会遇到页面加载不进去,报错R is taking longer to start than usual的情况

我们知道Rstudio为了节省内存和资源,当没有对Rstudio操作一段时间后(24小时),Rstudio会把现有的session写进硬盘并释放内存空间以提高内存利用率

那么当上一次的计算缓存过大,从硬盘读写到内存的时间就会大大地延长,就会出现上诉的R is taking longer to start than usual的情况

解决办法

1.不要reload,耐心等待加载完成即可进入

2.如果需要经常使用的话,建议每天上去随便运行一两行代码防止Rstudio把session写回硬盘

3.在每次退出之前,或者挂载运算的最后一步,在Rstudio里面运行 gc() 这个命令,这个命令可以把大部分没用的缓存空间释放,可以大大提速下一次的加载速度以及运算速度。这个命令只会清除无用的缓存,并不会对计算以及结果造成任何的影响,大家可以放心运行(极力推荐此方法)

三.结束

通过上述情况我们了解到了一些有用的信息,RStudio Server 目前存在一些设计缺陷。这种情况其实我们也有一些能够避免的方式,如果有Linux基础的同学建议直接在Linux里面使用R语言,相比起使用Rstudio,在Linux里面使用R语言可以大幅度提高运算速度。

一.

# 通过FinalShell 登录服务器后 输入R命令然后去执行你的代码
R
# 然后运行您的代码

二.

# 将你需要在Rstudio上运行的代码,保存为R文件
Rscript xxx.R
# 如果你的任务比较大,比较久不想等待的话您可以使用nohup命令
nohup Rscript xxx.R &
# 命令执行后会在当前目录下生成一个日志文件 nohup.out(查看命令如下)
tail -f nohup.out