JAVA优化篇 如何找到运行缓慢的线程

9 篇文章 0 订阅
1 篇文章 0 订阅

引入:

  JAVA提供了一些分析DUMP的工具,比如jmap,visualvm 等;

  JAVA还有寻找线程状态的工具,jstack等;

  数据库也有检查连接数,连接状态的命令,status,processlist等;

  代码中也可以添加一些时间的信息,对比信息发现可优化的地方;

  但这些都不是今天要记录的内容,今天要做的是使用一个比较暴力的方式查找出高并发模式下运行缓慢的线程。

正文:

  写高并发的时候经常会遇到的问题:

  单独观察每个分支线程或者主线程时,都执行地非常快,但是总体上运行的TPS却并不高,没有达到期望的值;

  更换环境,或者调大运行内存和CPU后,情况仍然不见好转;

  这时候有个办法是,找出每个线程的运行过程,寻找出耗时较大的代码段,再对代码进行分析。

 

  脚本我已经写好了:

View Code

  这个脚本有个基础条件是,分析的日志必须得是按照一定规范输出的日志,输出字段中带有时间和线程名。

  脚本传参:

  获得可以分析的所有线程,按照数量排序,并只获得前15个。

  接下来对每一个过滤出来的线程做分析处理。

  最后就是分析日志的方法了。

  主要思路是,用下一行的时间减去上一行的时间,如果超过给定的值,就将两行都输出到指定文件。

 

本文作者:但行好事-莫问前程

原文链接:https://www.cnblogs.com/garfieldcgf/p/12144690.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值