消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
项目背景
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项目假死原因的简单方法相关推荐
- mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)
在强大的单机也比不上集群,EMQ的集群模式很粗暴,只需要把EMQ服务关联在一起然后负载均衡就可以达到集群的效果,这样就算面对1000CK问题也迎刃而解 附上: 喵了个咪的博客:w-blog.cnEMQ ...
- 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...
解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 可以通过对redis的 ...
- RabbitMQ --- 惰性队列、MQ集群
一.惰性队列 1.1.消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限.之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题. ...
- SRS流媒体服务器——Forward集群搭建和源码分析
SRS流媒体服务器--Forward集群搭建和源码分析 目录 Forward集群原理 RTMP流转发(Forward)部署实例 Forward集群源码分析 1. Forward集群原理 Forward ...
- 13张PPT带你了解主动式消息队列处理集群
前言 偷偷和你们说,我搞了一份内部资料,该内部资料共有13张PPT,据作者透露,该PPT至少花了整整1周时间才编写完成,其内容简洁明了,内容深度足够,易于初学者理解,也给深度开发人员分享了不一样的消息 ...
- MQ高级(四)MQ集群
一.集群分类 RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式. RabbitMQ的集群有两种模式: (1)普通集群:是一种分布式集群,将队列分散到 ...
- rabbitmq服务器搭建-集群
rabbitmq服务器搭建-集群 前言 1.修改主机名 2.开启端口25672和4369 3.配置hosts 文件 4. cookie值同步 5.重启服务 6.将node2加入至node1 7.将no ...
- 单机服务器、集群和分布式
单机服务器.集群和分布式 单机服务器,故名思意,就是一台服务器提供所有功能,所有客户端的连接都在一台服务器上. 集群:每一台服务器独立运行一个工程的所有模块. 分布式:一个工程拆分了很多模块,每一个模 ...
- SRS流媒体服务器——Edge集群搭建
SRS流媒体服务器--Edge集群搭建 目录 edge原理 dege配置 1. edge原理 SRS的Edge主要解决⼏条流有⼤量播放请求的场景,⽐如⼀个流有上万⼈观看. SRS的Edge能对接所有的 ...
- nfs服务器_Kubernetes集群下部署NFS持久存储
NFS是网络文件系统Network File System的缩写,NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,而在本地的系统中来看,那个远程主机的目录就好像是自己的一 ...
最新文章
- luasocket 安装记录 (FS1.6)
- E-learning的现状与未来
- EL表达式和JSTL
- HDU2072 单词数
- 去除input填充颜色
- sqlrowset 转化为json_逆向学习 fastjson 反序列化始末
- oracle使用索引和不使用索引性能分析
- 2019-12-17 drivers/clocksource/arm_arch_timer.c
- 火狐浏览器中一个插件-httpfox
- 通过Callable和FutureTask创建线程
- 美创科技荣获国家信息安全漏洞库(CNNVD)技术支撑单位
- 包学会之浅入浅出Vue.js:升学篇
- 5G 当自强,根系不能忘
- 评救市后中国股市新乱象泛起谣言
- 无接任何usb设备却提示无法识别usb设备
- 计量语言学软件Altmann-Fitter阿尔特曼拟合器的使用简介(更新中)
- 台式计算机没有声音图标,电脑没有声音怎么回事 电脑没有声音怎么恢复 电脑声音图标不见了...
- Leanback(1)-播放控制栏下添加新的行
- iOS CGContext实现绘制任意圆角
- Free HEIC Converter(heic格式转换器)v1.0.6官方版
热门文章
- Java进阶:Docker
- 论文笔记_SLAM_综述十几篇_目录
- 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
- 机器学习课程笔记【三】广义线性模型(2)-构建广义线性模型
- 高等数学复习笔记(六)- 一元函数积分学的应用
- 机器学习精讲中7.1固定特征核中关于N维向量多项式特征映射的理解(二)
- C++中和“”引用头文件的区别
- Python生成高斯白噪声white noise
- 目标检测的模型集成方法及实验
- 【绝迹篇】RSA加密算法(私钥加签公钥验签)