项目背景

tomcat部署java应用,主要功能是通过线程池,读取mq消息进行消费处理,完成后,更新数据库消息状态。

项目问题

当并发量略大时,发现部分项目开始出现假死状态,不再进行消费。重启后恢复。

排查方法

发现问题后,保留现场。先把线程信息留存分析。

# 获取项目pid
ps aux | grep tomcat_xxx_xxx# 导出线程信息到文件备查
jstack pid > thread.txt

在thread.txt文件中,尝试查找“BLOCKED”关键字,看看是否有线程阻塞,示例如下:

"pool-1-thread-65" #190 prio=5 os_prio=0 tid=0x00007f96b8092000 nid=0x2a7fa waiting for monitor entry [0x00007f97096d1000]java.lang.Thread.State: BLOCKED (on object monitor)at com.db.DbConn.getConnection(DbConn.java:79)- waiting to lock <0x00000006dbe97f40> (a java.lang.Class for com.db.DbConn)at com.rabbitmq.client.impl.ConsumerWorkService$WorkPoolRunnable.run(ConsumerWorkService.java:99)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)

可以看到,线程阻塞在获取数据库连接的方法上,问题确定。

总结

代码中,要谨慎评估和使用线程同步方法,特别是一些老项目的代码,要加强巡查。

作者:咦咦咦萨
链接:https://www.jianshu.com/p/2cfae6678d57
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

排查tomcat项目假死原因的简单方法相关推荐

  1. OMM导致tomcat引用假死

    背景 在开发测试环境发现一个奇怪的情况,因查询100w条数据导致OOM,导致服务不可用,java应用是正常的,并没有因为异常退出. pod配置:2C1G jdk1.8 spring-boot-star ...

  2. 高并发编程-线程通信_使用wait和notify进行线程间的通信2_多生产者多消费者导致程序假死原因分析

    文章目录 概述 jstack或者可视化工具检测是否死锁(没有) 原因分析 概述 高并发编程-线程通信_使用wait和notify进行线程间的通信 - 遗留问题 我们看到了 应用卡住了 .... 怀疑是 ...

  3. win7“找不到该项目”的错误原因及解决方法

    相信有很多网友经常会碰到在使用Windows7系统删除文件或者文件夹的时候,出现"找不到该项目"的错误提示.我想大家一定很有印象.这个时候大部分的人都可能再次点击"重试& ...

  4. Tomcat假死原因排查

    tomcat假死?为什么会假死呢,可能大多数人不会碰到这个问题,如果出现问题,重启服务器就好了,可是如果这个问题没有解决的话,那么就可能会存在相应的隐患,如果你的用户量多,那么必然你的请求量就高,这样 ...

  5. Tomcat进程假死问题排查

    目录 1.网络 1.1 检查nginx的网络情况 1.2 检查tomcat的网络情况 2.Jvm内存溢出 2.1为什么会发生内存泄漏 2.2快速定位问题 2.3 jstack查看tomcat是否出现死 ...

  6. 线上tomcat服务器假死排查

         之前线上的Tomcat运行一段时间就会假死,导致用户访问页面打不开,这里记录一下解决问题的步骤: 由于此项目是老项目,所以并不是很清楚里面的技术实现细节:打开服务器日志也没发现什么异常: 怀 ...

  7. java 进程假死原因_分析java进程假死状况

    1 引言 1.1 编写目的 为了方便大家以后发现进程假死的时候能够正常的分析并且第一时间保留现场快照. 1.2编写背景 最近服务器发现tomcat的应用会偶尔出现无法访问的情况.经过一段时间的观察最近 ...

  8. Java中OutOfMemoryError(内存溢出)和Tomcat进程假死崩溃

    接手一个老项目ssh+jdk6+tomcat6,年底申报信息的系统开始频繁使用了,之前没有暴露的问题显现出来了 1.系统页面的响应时间变的很长. 2.偶尔会卡死,但等一会就好了,隔几天会突然挂掉. 3 ...

  9. java 进程假死原因_Java进程假死案例集合

    1. 案例1 今天通过域名调一个接口,10次中偶尔有1-2次请求失败,域名后绑定VIP,VIP后面为5台应用服务器. 1.1 范围缩小 直觉怀疑为某一台有有问题,于是单独的进行接口调用发现确实为其中一 ...

  10. 鼠标右键点击文件夹、bat文件、txt文档,指针出现假死转圈的解决方法(Adobe Acrobat右键邮件选项引起的win10假死)

    近来安装软件,突然发现鼠标右键bat文件会出现指针一直转圈,过超过50秒才会出现右键菜单的情况.经过其他文件测试,除快捷方式右键可以正常速度出现右键菜单,其他桌面文件夹.bat文件.txt文档均出现同 ...

最新文章

  1. 1、初识Server API for JavaScript
  2. UIScrollView属性和用法
  3. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则
  4. 页面中使用多个element-ui upload上传组件时绑定对应元素
  5. DL之DNN优化技术:自定义MultiLayerNetExtend算法(BN层使用/不使用+权重初始值不同)对Mnist数据集训练评估学习过程
  6. 【数据库复习】第一章绪论
  7. .NET Core玩转机器学习
  8. gtest hook 示例
  9. 修改服务器时间需要重启吗,云服务器需要定期重启吗
  10. 又是系统时间惹的祸 TreeView
  11. windows 运行banana
  12. CMOS开关学习(一)
  13. 网上书店管理系统mysql代码_网上书店管理系统(附程序源代码).pdf
  14. 2021-10-31
  15. HDLBits学习笔记——移位寄存器
  16. vulhub漏洞复现30_Jetty
  17. android 11.0 12.0去掉前置摄像头闪光灯功能
  18. SequoiaDB 巨杉数据库产品下载
  19. android room 教程,android room 使用
  20. 不是python文件操作的相关函数_从零开始学Python(七):文件存储I/O流和异常捕捉

热门文章

  1. iPhone手机连接蓝牙鼠标和蓝牙键盘
  2. 数据中心为什么需要大二层网络
  3. 计算机软考高级 天津落户,官宣:软考高级可作为高级职称人才引进落户上海...
  4. tf.train.Saver()
  5. 【vue 导出功能】file-saver插件
  6. C++中read和write的区别
  7. reverse-polish-notation
  8. 互联网DSP广告系统架构及关键技术解析 | 广告行业资深架构师亲述
  9. Only fullscreen opaque activities can request orientation比较完美的解决方法,黑白屏问题解决
  10. 到位App_jQuery_art-template