性能定位的一些方法


问题背景:

Tps约50左右,10线程与50线程压测tps一致,只响应时间不断增加,数据库服务器资源占用较低,而应用服务器cpu维持在一定值之后随着并发数增加,cpu不再增高,凭经验判断,应该跟代码实现有关;

所以直接找引发问题的代码;

快速手段如下:

使用top命令查看当前进程的资源占用情况,通过下图我们看到PID为4501的进程为java的主要活动进程

使用top –Hp 4501来查看-H 显示线程 -p 指定pid 如果执行上述命令之后,发现还是只有一行,那么按下 shift+h, 即可显示线程占用资源情况,此处占用CPU最高的线程的PPID是15894

扑捉到线程后,需jstack跟踪,此时线程号转化为16进制,

使用命令 jstack 4501 |grep -i 3e16 来查询进程详细信息

此时与开发沟通,在代码实现中,在合并账户加锁,在并发中,导致大量线程等待,后来通过锁账户改成锁收据单,锁粒度降低,改完后,重新测试,tps达到300,随着并发数增加,cpu资源升高,根据硬件消耗与tps对比,达到正常;

在举一例

定时任务,执行时间过长;

经过监控,内存瞬间达到极致,回收缓慢,程序卡顿严重,通过jmap(上述类似方法,也可以jvisual)追踪代码,某方法再一次执行中提交大量数据,后经与开发讨论修改数据量,并反复压测验证,达到最优配置,从原来的20min执行时间缩短为2min,且内存回收正常(如下图);

优质内容筛选与推荐>>
1、每周一个算法(1)---倒排索引
2、AtomicInteger学习
3、test
4、浏览器bug html 底部
5、C++多维数组


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号