zoukankan      html  css  js  c++  java
  • jdk工具jvm堆栈调试,解决tomcat服务宕机无法访问,跟踪发现log4j死锁

    表象:

    tomcat单机环境(app端+后台管理),程序刚启动起来所有请求正常,几分钟过后某一个业务模块无法访问,无任务请求日志,其它模块都能正常使用。

    解决思路:

    1、疑似代码内部事务处理机制错误,造成死锁,把所有主动事务全部取消,依然不能解决任务问题,还是一样。
    2、增加tomcat连接数,无任何反应。

    3、内部代码优化,表建索引、建视图,宕机频率有所下降,但是当app和后台同时访问一个模块,又是瞬间宕机,没有解决根本性问题。

    4、通过jstack方式查看tomcat 的堆日志,跟踪每个线程的

    进入windows  cmd界面输入命令:jstack -l pid  

    pid为进程的id ,进程 id 在 :    查看 -  选择列  - 勾选 pid  ,显示出来

     这种日志显示不是很方便;还有一种界面化的工具可以更方便的查看tomcat堆内存的使用

    5、jvisualvm工具

    在安装的jdk的bin目录下面运行:jvisualvm.exe

    启动tomcat后可以看到左边菜单栏tomcat进程,监视 - 堆dump 就可以看到dump内存的运行情况,

     最终发现了线程blocked 异常

     

    是由于log4j日志导致的死锁,程序直接阻塞,导致tomcat宕机 假死

  • 相关阅读:
    Unity3d启动事件
    UI 科学
    LOL
    流光
    PlayerPrefs
    C++
    Android Home
    状态机
    架构设计
    AI
  • 原文地址:https://www.cnblogs.com/hz0356/p/9437463.html
Copyright © 2011-2022 走看看