首页 > 系统相关 >linux系统内存溢出Out of memory

linux系统内存溢出Out of memory

时间:2023-03-23 15:22:06浏览次数:41  
标签:oom linux 值为 OOM kill 内存 memory 进程 Out

有一台服务器的内存是32g,我在上面跑了一个mysql数据库,后面经常发现mysql隔三差五的就down了,通过查看系统日志发现操作系统OOM了

grep "Out of memory" /var/log/messages

 

 

一、OOM是什么?
OOM:out of memory,字面意思当然是系统内存溢出。
Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。
oom_killer是Linux自我保护的方式,内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory()被触发,然后调用select_bad_process()选择一个”bad”进程杀掉。如何判断和选择一个”bad进程呢?linux选择”bad”进程是通过调用oom_badness(),挑选的算法和想法都很简单很朴实:最bad的那个进程就是那个最占用内存的进程

二、OOM时,依据什么杀掉进程?
参数:panic_on_oom: 用来控制当内存不足时是否启用OOM
值为0:内存不足时,启动 OOM killer。
值为1:内存不足时,有可能会触发 kernel panic(系统重启),也有可能启动 OOM killer。
值为2:内存不足时,表示强制触发 kernel panic,内核崩溃GG(系统重启)。

参数:oom_kill_allocating_task: 用来决定杀掉哪种进程
值为0:会 kill 掉得分最高的进程。
值为非0:会kill 掉当前申请内存而触发OOM的进程。
当然,一些系统进程(如init)或者被用户设置了oom_score_adj的进程等可不是说杀就杀的。

参数:oom_dump_tasks:用来记录日志
oom_dump_tasks参数可以记录进程标识信息、该进程使用的虚拟内存总量、物理内存、进程的页表信息等。

值为0:关闭打印上述日志。在大型系统中,可能存在上千进程,逐一打印使用内存信息可能会造成性能问题。
值为非0:有三种情况会打印进程内存使用情况。
1、由 OOM 导致 kernel panic 时;
2、没有找到符合条件的进程 kill 时;
3、找到符合条件的进程并 kill 时。

参数:oom_adj、oom_score_adj 和 oom_score:用来控制进程打分(分数越高,就先杀谁)
这三个参数的关联性比较紧密,都和具体的进程相关,位置都是在 /proc/进程PID/ 目录下。

 

本次问题产生的原因是mysql占用内存太大,产生了OOM,所有把服务器的内存扩增到了64G,问题就解决了。

 

也可以优化mysql配置文件 my.cnf的innodb_buffer_pool_size参数可以很好的解决

innodb_buffer_pool_size = 16G    #允许mysql使用内存的最大值
修改完配置文件systemctl restart mysqld

 

标签:oom,linux,值为,OOM,kill,内存,memory,进程,Out
From: https://www.cnblogs.com/xgsh/p/17191061.html

相关文章

  • linux基本操作
    删除相同的行并且显示相同行出现的次数uniq-c排序sort:-n以数值排序防止出现1<10这种按字符比较的情况-t指定排序的分隔符-k指定按照第几列进行排序......
  • Linux 网络配置 ---桥接模式---最简单的方法!!!
    1.桥接模式(Bridged)VMware桥接模式,也就是将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部......
  • centos7 Linux 安装及升级node、npm
    centos7初始版本node6npm3 更新升级node版本#安装nnpminstall-gn#查看版本n--version//v9.0.1#把当前系统的Node更新成最新的“稳定版本”nstabl......
  • CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
    网上查应该是node导致的内存溢出,64位电脑默认1.4G,32位电脑默认0.7G在package.json中的Scripts中添加node的参数 "scripts":{  "serve":"node--max_old_s......
  • linux静默安装oracle11g 执行dbca.rsp时出错
    问题大概是:[oracle@bogon~]$$ORACLE_HOME/bin/dbca-silent-responseFile/home/oracle/etc/dbca.rspExceptioninthread"main"java.lang.NullPointerExceptionato......
  • windows和linux文件格式互转
     #查看当前文件格式cat-Afilename每行结尾是^M$为windows每行结尾是$为linux方式一:dos2unixtest2.txt#把DOS格式的文本文件转变成UNIX下的文本文件方......
  • Error message "error:0308010C:digital envelope routines::unsupported"
    由于升级Nodejs版本造成的,一般创建项目时为16.7.0版本,然后安装或升级了更高版本,再进行run的时候,会提示。Errormessage"error:0308010C:digitalenveloperoutines::unsu......
  • Linux 中间件 | Nginx 支持 perl-cgi
    本文环境,AmazonLinuxrelease2,全程用root用户。前提是已经装好了Nginx,并且有--with-http_perl_module模块。没有则参考添加一、首先确认并安装perl-FCGIrpm-q......
  • linux 文件解压
    tar命令一必选参数-c表示创建文件-create-x表示解压缩文件-t 表示查看压缩包里的文件-r 追加压缩文件-u更新压缩包中的文件-f 指定文档名后面不能接参......
  • shell脚本监控系统资源-linux
    #!/bin/bashbase_dir=/optwar_processor="tomcat"jar_processor="manager-server.jarplatform-server.jarplatform-task.jarplatform-trade.jarplatform-user.jar"IP......