前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >内存溢出危机:如何优化服务器和IDE的内存管理?

内存溢出危机:如何优化服务器和IDE的内存管理?

作者头像
天意生信云
发布2025-01-22 08:01:26
发布2025-01-22 08:01:26
10600
代码可运行
举报
运行总次数:0
代码可运行

在使用服务器或者集成开发环境过程中,不可避免会遇到内存溢出的问题。所以内存管理的好坏直接决定了数据分析的效率,本篇将从实际场景出发,分享内存优化的关键技巧与实践,让你的工作流畅无阻!

实例内存监测

在跑大任务之前,用户端可以查看自己的实例所在的服务器是否有足够的内存,在天意云官网可以看到不同服务器情况和内存配置,用户可以自行切换,选择时段内最优配置跑任务。

如果内存剩余过低,可以登录服务器,使用命令如top、free -h检查内存消耗最多的进程。如果某些进程占用大量内存但并非必要,可以使用kill -9命令终止这些进程,释放部分内存。如果不及时处理,实例内存溢出会导致卡死,长时间超出套餐限制使用资源,系统会强制停止实例,届时未保存的数据会丢失。

Rstudio解决内存溢出与卡顿

自定义函数减少无用变量的残留

不定义函数的情况:

代码语言:javascript
代码运行次数:0
复制
#不定义函数的情况
n <- 10^9
a <- matrix(1,n) #大内存对象1
b <- matrix(1, n) #大内存对象2

#计算a和b的和,并将结果存储在c中
c <- a + b

定义函数的情况:

代码语言:javascript
代码运行次数:0
复制
#定义函数的情况
n<-10^9
memory_efficient_sum<-function(n){
  a<-matrix(1,n)#大内存对象1
  b<-matrix(1,n)#大内存对象2
  c<-a+b#计算a和b的和
  return(c)#返回结果
}

#调用函数,并传入n
c <-memory_efficient_sum(n)#这里传入的是变量n的值

在定义的函数memory_efficient_sum中,矩阵a和b是局部变量,它们只在函数执行期间存在。一旦函数执行完毕并返回结果,这些局部变量就不再被引用,因此它们所占用的内存可以被垃圾回收器回收。

通过定义一个函数,我们可以在函数内部处理所有内存密集型操作,而不需要在全局环境中保留这些大型对象的引用。这样做的好处是,函数执行完毕后,局部变量会被自动清理,从而释放内存。

Rstudio使用建议

1、运行gc()函数手动清理内存垃圾

2、关闭Rstudio注意

3、Rstudio打不开

进入天意云官网点击清理Rstudio会话:

还可以top -u shpc_xxx (shpc_xxx改成你自己的用户名)这样看看rsession是否一直在加载数据,或者执行watch free -m命令观察内存变化情况,如果内存使用量一直增加,建议进行等待。如果等到内存不再变化后,页面还是在loading的状态,可以使用浏览器无痕模式访问Rstudio,看看是不是前端页面卡住了。

如果等了很久,都不行的话,可以尝试杀掉对应的进程,然后重新登录

代码语言:javascript
代码运行次数:0
复制
# 获取进程号
ps -ef | grep "/usr/lib/rstudio-server/bin/rsession -u $(whoami)" | grep -v grep

# 杀掉进程:将123换成上一步得到的进程号 -9是固定的值,不要动(下面还有一行,是grep进程,无需理会,只需要关注红色框的进程)
kill -9 123


# 上述两条命令实现的功能也可以使用下面这一条命令来实现
ps -ef | grep "/usr/lib/rstudio-server/bin/rsession -u $(whoami)" | grep -v grep | awk '{print $2}' | xargs kill -15

Jupyter占用内存高问题排查解决

  1. 执行命令top -b -n 1 -o VIRT,查看进程信息并按照内存占用情况排序。从图中可以看到,占用内存最高的是python程序。
  1. 查看具体是哪些Python程序
代码语言:javascript
代码运行次数:0
复制
ps -ef | grep 进程号
  1. 依据上一步得到的内核编号,到Jupyter里面定位到具体的代码
  1. 如果已经运行完毕了的程序,记得及时关闭,否则内存会一直占用着。如果内存一直占用着不用,系统就会将其换出到交换内存中,导致交换内存占用高。如果还需要用,但是积累了很多垃圾变量,可以重启内核。

重启

下期内容

本系列下一节更新“加速服务器数据的下载与上传”的内容

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档