分析java程序在运行中卡顿

一、现场程序卡顿,内存飙升分析原因
  1、首先通过Top -m  分析出对应的信息,登录APP服务器和DB服务器, top 命令后按下m键,观察进程下CPU和MEM的百分比, APP服务器超高MEM百分比考虑大数据查询,APP服务器超高CPU百分比或DB服务器超高百分比考虑慢查询。

确定分析方向后,举个 例子:图中CPU占用过高,可能是慢sql导致cpu飙升,去db服务器上分析慢查询


2、mysql之 slow log 慢查询日志

 打开slow开关

作用:记录慢SQL语句的日志,定位低效SQL语句的工具日志

开启慢日志:slow_query_log=1

慢日志文件的位置:slow_query_log_file=/data/mysql/slow.log

通过shell脚本分析对应慢sql 先分析是否有慢sql


grep -A4 'Time: 191227' /usr/local/geekplus/data/mysql/query-slow.log|grep Query_time|last| awk -F " " '{print $3}',|sort -k1rn|head -100

--------------------------------------------------------------------------------------------------------------------------

tail -1000000 /usr/local/geekplus/data/mysql/*slow*.log|grep -A4 'Time: 2019-12-25T05'|grep Query_time| awk -F " " '{print $3}'|sort -k1rn


二、内存和cpu分析方法
1、top的基本信息(输入top命令回车后按一下m键再按一下c键),

  java某个进程占用内存比较高,当前的PID是11316,top -Hp 11316 分析进程下的线程,

jstack和jmap进行分析

 通过   jmap -dump:format=b,file=文件名 要dump的PID ]. Jmap的dump文件为编码文件,需要借助MAT进行解码分析。而且dump文件大小跟XMX有关,配置越高,文件越大。
通过top找到进程后,top -Hp pid 分析进程下的线程,通过jstack,进制转换  printf "%x\n" PID 后得到575c,然后jstack 进程号 |grep -A100  575c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值