项目背景

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)

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

总结

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

消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法相关推荐

  1. mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)

    在强大的单机也比不上集群,EMQ的集群模式很粗暴,只需要把EMQ服务关联在一起然后负载均衡就可以达到集群的效果,这样就算面对1000CK问题也迎刃而解 附上: 喵了个咪的博客:w-blog.cnEMQ ...

  2. 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...

    解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 可以通过对redis的 ...

  3. RabbitMQ --- 惰性队列、MQ集群

    一.惰性队列 1.1.消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限.之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题. ...

  4. SRS流媒体服务器——Forward集群搭建和源码分析

    SRS流媒体服务器--Forward集群搭建和源码分析 目录 Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 1. Forward集群原理 Forward ...

  5. 13张PPT带你了解主动式消息队列处理集群

    前言 偷偷和你们说,我搞了一份内部资料,该内部资料共有13张PPT,据作者透露,该PPT至少花了整整1周时间才编写完成,其内容简洁明了,内容深度足够,易于初学者理解,也给深度开发人员分享了不一样的消息 ...

  6. MQ高级(四)MQ集群

    一.集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式. RabbitMQ的集群有两种模式: (1)普通集群:是一种分布式集群,将队列分散到 ...

  7. rabbitmq服务器搭建-集群

    rabbitmq服务器搭建-集群 前言 1.修改主机名 2.开启端口25672和4369 3.配置hosts 文件 4. cookie值同步 5.重启服务 6.将node2加入至node1 7.将no ...

  8. 单机服务器、集群和分布式

    单机服务器.集群和分布式 单机服务器,故名思意,就是一台服务器提供所有功能,所有客户端的连接都在一台服务器上. 集群:每一台服务器独立运行一个工程的所有模块. 分布式:一个工程拆分了很多模块,每一个模 ...

  9. SRS流媒体服务器——Edge集群搭建

    SRS流媒体服务器--Edge集群搭建 目录 edge原理 dege配置 1. edge原理 SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看. SRS的Edge能对接所有的 ...

  10. nfs服务器_Kubernetes集群下部署NFS持久存储

    NFS是网络文件系统Network File System的缩写,NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,而在本地的系统中来看,那个远程主机的目录就好像是自己的一 ...

最新文章

  1. luasocket 安装记录 (FS1.6)
  2. E-learning的现状与未来
  3. EL表达式和JSTL
  4. HDU2072 单词数
  5. 去除input填充颜色
  6. sqlrowset 转化为json_逆向学习 fastjson 反序列化始末
  7. oracle使用索引和不使用索引性能分析
  8. 2019-12-17 drivers/clocksource/arm_arch_timer.c
  9. 火狐浏览器中一个插件-httpfox
  10. 通过Callable和FutureTask创建线程
  11. 美创科技荣获国家信息安全漏洞库(CNNVD)技术支撑单位
  12. 包学会之浅入浅出Vue.js:升学篇
  13. 5G 当自强,根系不能忘
  14. 评救市后中国股市新乱象泛起谣言
  15. 无接任何usb设备却提示无法识别usb设备
  16. 计量语言学软件Altmann-Fitter阿尔特曼拟合器的使用简介(更新中)
  17. 台式计算机没有声音图标,电脑没有声音怎么回事 电脑没有声音怎么恢复 电脑声音图标不见了...
  18. Leanback(1)-播放控制栏下添加新的行
  19. iOS CGContext实现绘制任意圆角
  20. Free HEIC Converter(heic格式转换器)v1.0.6官方版

热门文章

  1. Java进阶:Docker
  2. 论文笔记_SLAM_综述十几篇_目录
  3. 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
  4. 机器学习课程笔记【三】广义线性模型(2)-构建广义线性模型
  5. 高等数学复习笔记(六)- 一元函数积分学的应用
  6. 机器学习精讲中7.1固定特征核中关于N维向量多项式特征映射的理解(二)
  7. C++中和“”引用头文件的区别
  8. Python生成高斯白噪声white noise
  9. 目标检测的模型集成方法及实验
  10. 【绝迹篇】RSA加密算法(私钥加签公钥验签)