很多老师和同学使用Rstudio的时候,会觉得Rstudio很卡,高性能服务器的体验甚至还不如自己电脑,造成这种情况的原因有很多
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.占用缓存过大
同学们使用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() 这个命令,这个命令可以把大部分没用的缓存空间释放,可以大大提速下一次的加载速度以及运算速度。这个命令只会清除无用的缓存,并不会对计算以及结果造成任何的影响,大家可以放心运行(极力推荐此方法)
除了上诉方法,如果有Linux基础的同学建议直接在Linux里面使用R语言,相比起使用Rstudio,在Linux里面使用R语言可以大幅度提高运算速度。
使用方法:https://www.xiyoucloud.net/helpcontent/11.html