前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux内存不足导致tomcat宕机

linux内存不足导致tomcat宕机

作者头像
全栈程序员站长
发布2022-09-15 10:33:21
3.2K0
发布2022-09-15 10:33:21
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

情况,正常运行的服务器,突然tomcat不能访问了

因为服务器的内存是2g的,所以就怀疑是内存不够了,所导致

开始排查

代码语言:javascript
复制
ps -ef|grep tomcat
在这里插入图片描述
在这里插入图片描述

显示tomcat已经不在运行了

代码语言:javascript
复制
free -m
在这里插入图片描述
在这里插入图片描述

查看内存,当时那台机器free,只有77了,这张图是后在自己电脑上截的

代码语言:javascript
复制
grep "Out of memory" /var/log/messages
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNOQtk9c-1585835537447)(E:\Workspaces\Markdown\linux\记一次内存不够的情况.assets\image-20200401112058171.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dNOQtk9c-1585835537447)(E:\Workspaces\Markdown\linux\记一次内存不够的情况.assets\image-20200401112058171.png)]
在这里插入图片描述
在这里插入图片描述

查看系统日志,显示内存不足,杀死了一个java进程,可以推测,就是tomcat惨遭了毒手,

那为什么杀了tomcat呢?

​ 这是由于Linux 内核有个机制叫OOM killer(Out Of Memory killer),,当系统内存不足的时候,out_of_memory()被触发,然后调用select_bad_process()选择一个”bad”进程杀掉。linux选择”bad”进程是通过调用oom_badness(),挑选的算法和想法都很简单很朴实:最bad的那个进程就是那个最占用内存的进程。

​ 对于每个进程都有一个oom_score的属性/proc/PID/oom_score oom- killer 会杀死oom_score较大的进程,当oom_score为0时禁止内核杀死该进程。

代码语言:javascript
复制
top
在这里插入图片描述
在这里插入图片描述

可以使用top查看内存状态,可以看到mysql占内存最多,其次是pid=6021的Java程序

代码语言:javascript
复制
ps -ef|grep 6021
在这里插入图片描述
在这里插入图片描述

查看到6021是一个java程序

代码语言:javascript
复制
cat /proc/PID/oom_score
在这里插入图片描述
在这里插入图片描述

可以看到mysql的oom分数为63,java程序的oom分数为37

如何使内存不足时,不去杀我们重要的业务相关的进程??

​ /proc/PID/oom_adj,一般来说,oom_adj的值越大,该进程被系统选中终止的可能就越高,当 oom_adj=-17时,oom_score将变为0。(要对某个重要进程进行OOM保护的话,把-17写入到 oom_adj即可)

代码语言:javascript
复制
echo -17 > /proc/PID/oom_adj

来防止重要的进程被oom_killer杀死。(不推荐,如果是保护进程发生了内存泄漏,而又无法被系统杀死,可能会导致系统崩溃)

推荐优化系统,提高服务器配置

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163649.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档