Java进程cpu频繁100%问题解决方案

 更新时间:2020年10月12日 09:40:00   作者:imfx  
这篇文章主要介绍了Java进程cpu频繁100%问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.在一次周末收到部门的反馈,线上机器java进程的cpu会频繁100% 监控系统发了很多报警邮件,于是登录跳板机进行排查解决2.使用top命令查看进程情况

发现每隔个几秒cpu就达到100%左右,报警邮件确实是诚不欺我,java进程有问题

2.于是查看下到底是java进程下的哪个线程造成的cpu频繁100%

使用top -Hp 25567 查看进程下的线程信息

得到线程编号26250

3.查看该线程的栈信息

printf '%x\n' 26250 获取26250的16进制数为668a

jstack25567 |grep -A 30668a 得到该线程栈信息

ContainerBackgroundProcessor[StandardEngine[Catalina]] 这是什么任务,没见过啊,懵了

继续看下面的栈信息有apache.catalina之类的信息(上图没有截全)

我们的java服务是通过war包的形式发布到tomcat里的,想着是不是因为tomcat配置的问题

先网上查一下吧(吃了不了解tomcat底层的亏)

4.根据网上的资料,有一种说法说是因为tomcat的server.xml的reload属性设置为了true,那么reload属性有什么作用呢?

如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。在开发阶段将reloadable属性设为true,有助于调试,但这样用会加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。

看到这赶紧和其他节点的tomcat配置对比一下,发现其他节点的reload都配置为false,只有这一台有问题了的设置为了true。

什么也不说了修改reload为false进行重启,当然如果真的不是因为reload配置导致cpu频繁100%的话,设置reload为false对系统也是有好处的。

5.修改reload为false进行验证

修改配置重启后果然没有再频繁出现cpu 100%了,至于为什么运行这么久监控系统才发通知邮件呢,后来做监控的小伙伴说是因为他们那边信息采集出了问题,没有发现。

还有一个问题,为什么单单只有这一台reload为false了,真相只有一个,项目扩展节点时,小伙伴使用测试环境的server.xml配置文件,然后改改端口,war路径就给发上去了,这才引出这样的问题

问题总算解决了。。。。。。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • spring常用注解开发一个RESTful接口示例

    spring常用注解开发一个RESTful接口示例

    这篇文章主要为大家介绍了使用spring常用注解开发一个RESTful接口示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • java转发和重定向的区别

    java转发和重定向的区别

    这篇文章主要介绍了java转发和重定向的区别,需要的朋友可以参考下
    2014-10-10
  • IDEA生成可运行jar包(包含第三方jar包)流程详解

    IDEA生成可运行jar包(包含第三方jar包)流程详解

    这篇文章主要介绍了IDEA生成可运行jar包(包含第三方jar包)流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Mybatis查询返回Map<String,Object>类型的实现

    Mybatis查询返回Map<String,Object>类型的实现

    本文主要介绍了Mybatis查询返回Map<String,Object>类型的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 在SpringBoot中静态资源访问方法

    在SpringBoot中静态资源访问方法

    这篇文章给大家介绍了在SpringBoot中静态资源访问方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-11-11
  • java实现斗地主游戏

    java实现斗地主游戏

    这篇文章主要为大家详细介绍了java实现斗地主游戏,洗牌、发牌、看牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Gradle的基本使用

    Gradle的基本使用

    这篇文章主要介绍了Gradle的基本使用方法,帮助大家更好的理解和学习Gradle的相关知识,感兴趣的朋友可以了解下
    2021-03-03
  • 使用Spring注入Hibernate验证框架

    使用Spring注入Hibernate验证框架

    这篇文章主要介绍了使用Spring注入Hibernate验证框架方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringBoot如何接收Post请求Body里面的参数

    SpringBoot如何接收Post请求Body里面的参数

    这篇文章主要介绍了SpringBoot如何接收Post请求Body里面的参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java使用反射和动态代理实现一个View注解绑定库

    Java使用反射和动态代理实现一个View注解绑定库

    这篇文章主要介绍了Java使用反射和动态代理实现一个View注解绑定库,代码简洁,使用简单,扩展性强,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05

最新评论