暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CPU飙升时线程问题快速定位

金融科技小站 2018-05-06
1311

环境及问题

linux系统、java程序线上系统突然CPU升高并且长时间不下降


排查步骤

1.通过top命令查看当前cpu占用最高的java程序进程号;


2.通过top -H -p <进程号>,查看当前进程中哪些线程占用的CPU较高(-H为显示线程信息),如下图发现有两个CPU长时间为R状态(表示运行)并且占用CPU较高(此时top显示的PID为线程号),怀疑出现了线程死锁和死循环;


3.使用pstack <进程号>或者jstack <进程号>命令dump当前进程所有线程的运行堆栈,可以通过 > 文件名 将堆栈信息输出到文件;


4.将前面第2步查看到有问题的线程号(10进制)转换为16进制,然后搜索dump出来的线程堆栈,在堆栈中可以看到调用链,因此可以看到存在问题的类;


引申工具—终端录制工具

线上的系统如果是通过跳板机等工具登录的,如何将dump下来的线程堆栈文件下载到本地?此时可以使用linux/Mac自带的script工具记录终端内容(script即可以记录终端操作的情况,还能进行录制和回放,例如用于监控每个登录用户在服务器上的操作情况)。

1.通过script <输出文件名>开始记录,如果要记录线上的线程dump文件只需要登录线上的服务器,然后cat <文件名>即可;


2. 记录完成后通过exit命令或Ctrl+d退出屏幕录制;

3. 之后可以在输出文件中查看所有的操作记录。


相关文章

神一般的效能工具—Alfred推荐

Mac Book笔记软件Outline推荐

金融分布式架构需要关注的几个问题

网联支付清算平台架构

Spring Cloud核心组件,快速搭建分布式平台

通过幂等保障分布式、高并发系统的数据一致性

Spring事务控制的深度介绍

全面的介绍银行存款业务,让你一目了然

网联支付清算平台架构,支撑起亿级交易量....

金融系统模型之交易、户账、总账

金融结算系统的基础业务之账户体系

大家总说的银行日终批处理到底做了些什么

文章转载自金融科技小站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论