linux内存不足导致tomcat宕机

linux内存不足导致tomcat宕机情况,正常运行的服务器,突然tomcat不能访问了因为服务器的内存是2g的,所以就怀疑是内存不够了,所导致开始排查ps-ef|greptomcat[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TTLyQ5EC-1585835537446)(E:\Workspaces\Markdown\linux\记一次内存不够的情况.assets\image-…

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

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

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

    开始排查

    1. ps -ef|grep tomcat
      

      在这里插入图片描述

      显示tomcat已经不在运行了

    2. free -m
      

      在这里插入图片描述

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

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

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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时禁止内核杀死该进程。

    1. top
      

      在这里插入图片描述

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

    2. ps -ef|grep 6021
      

      在这里插入图片描述

      查看到6021是一个java程序

    3. 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即可)

    • echo -17 > /proc/PID/oom_adj
      

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 写给 python 程序员的 OpenGL 教程

    OpenGL是OpenGraphicsLibrary的简写,意为“开放式图形库”,是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL不是一个独立的平台,因此,它需要借助于一种编程语言才能被使用。C/C++/python/java都可以很好支持OpengGL,我当然习惯性选择python语言。如果读者是python程序员,并且了解numpy,接下来的阅读应该不会有任何障碍;否则,我建议先花半小时学习一下python语言。

  • Python和Java哪个就业前景好?

    Python和Java哪个就业前景好?Python和Java这两大编程语言,很多人都喜欢拿来比较,一个是后起之秀,潜力无限;一个是行业经典,成熟稳定,对于想从事IT技术的人员来说,很难抉择,那么,Python和Java到底哪一个就业前景更好呢?Python在国外应用相对成熟,在国内还处于起步阶段,近两年,随着人工智能、机器学习的、大数据以及云计算的兴起,Python发展势如破竹,很多企业开始进入该行列,Python人才是必不可少环…

  • 【分布式事务】GitHub上分布式事务框架压测性能对比

    【分布式事务】GitHub上分布式事务框架压测性能对比一、前言      随着项目逐步以微服务开发为趋势,逐渐呈现一个服务对应一个数据库。从中产生了分布式事务的问题:一个操作先后调用不同的服务,要保证服务间的事务一致性,这就是分布式事务解决的问题。     &am

    2022年10月22日
  • matlab毕业设计题目_matlab毕业设计论文带有程序

    matlab毕业设计题目_matlab毕业设计论文带有程序毕业设计(论文)`题目:院系机械工程系专业班级学生姓名指导教师二○一年六月Matlab的转子故障振动信号分析摘要随着机械行业的日益发展,转子等旋转机械的故障日渐趋多,转子的故障诊断技术受到越来越多的重视,并在世界范围内取得了长足的进步。作为大型机器中不可或缺的部件,有着举足轻重的作用,但,,,,。对发电机及其转子进行状态监测和信号分析,,转子故障类型主要有四种:转子不平衡、、转子…

    2022年10月15日
  • 吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!

    吞噬星空鸿蒙殿主,论《吞噬星空》是鸿蒙三部曲的最后一部!该楼层疑似违规已被系统折叠隐藏此楼查看此楼众所周知,番茄的鸿蒙系列小说有两部已经完本,分别是《星辰变》和《盘龙》,不知道大家发现没有,在《星辰变》和《盘龙》的结尾部分番茄已经在文中埋下伏笔,预示着《吞噬星空》就是鸿蒙三部曲的最后一部作品!《盘龙》原文:鸿蒙金榜瞬间便吸收了这一丝灵魂之力,顿时在第一行,鸿字之后,出现了一个字林。一瞬间,林雷脑海中浮现了许多讯息,也会了不少神通能力。“原来,鸿蒙掌控…

  • 黑色非主流图片伤感女_用一串代码让全班同学说卧槽的代码

    黑色非主流图片伤感女_用一串代码让全班同学说卧槽的代码校内代码xiaonei代码xiaonei黑色非主流代码http://xioonei.cn

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号