背景

随着业务量的飙升,公司的系统由于早期待为了业务高速迭代,从精益思维的角度,快速开发,留下了很多历史包袱(或者性能bad code),导致性能问题频出,这篇文章,主要梳理一些常用的性能工具,后续会更新一些排查性能问题的通用思路。

Linux 下常用的性能工具

一般来将,笔者的业务均是部署在linux服务器,这里不得不考虑,操作系统层面的性能排查。
Linux系统分析的工具集:
Brendan Gregg http://www.brendangregg.com/linuxperf.html

大家详细的可以去网站查看。上面图中提到的是linux各个层面:应用层、系统层、驱动层、网络层,及对应的各种排查命令,这里不再一一介绍,点进去链接,保证你收货颇丰。

Java自带的性能排查工具

  1. jstack 抓取当前堆栈信息,主要用于查看java中的线程都在做什么,非常适用于排查系统响应慢、CPU偏高,是否存在热锁等一系列的问题。大家可能都只知道jstack,不过建议大家也看下jstack的一些辅助参数,jstack默认只能看到Java栈,而jstack -m则可以看到线程的Java栈和native栈。
    通常我们会通过linux 命令 top -H 和 jstack 去定位一些cpu执行较高的问题。另外推荐两个linux的命令
    pstack 和 perf pstack可以用来看Java进程的native栈,perf linux性能分析超级利器。
  2. 内存相关命令:
    jmap 获取heap信息,同样他也有不同参数,处理不同的场景 比如jmap -dump 和 jmap -histo:live
   #提取进程内存信息,用于分析OOM导致原因jmap -dump:format=b,file=xxx.hprof  <pid> [导出整个JVM 中内存信息]#输出堆信息jmap -heap <PID>#输出永久代信息jmap -permstat  <PID>

jstat 查看实时gc情况,不过复杂的问题还是建议查看gclog

   通常运行命令如下:jstat -gc 12538 5000 即会每5秒一次显示进程号为12538的java进成的GC情况,
   jps 查看java的进行id信息jhat 查看dump信息,不过目前已经不常用,下文会介绍更先进的工具。

java自带的性能排查工具,在一些明显问题的排查上非常快捷,另一方面也是快捷获取线上系统状态快照,便于用利器进一步分析。

进一步的利器

  1. gc日志分析利器:

      GCViewer  和  gceasy.io ,或者是在线的,可以直接导入日志,可视化的分析gc情况。
    

2.堆内存分析工具:
MAT 又叫做 Eclipse Memory Analyzer

3.线程分析工具:
IBM JCA工具 (IBM Thread and Monitor Dump Analyze for Java)
一个容许在java线程中定位线程挂起/死锁/资源竞争和瓶颈的工具。

4.其他性能工具:

  JProfiler:集CPU、内存和线程性能分析于一体,可以用于分析性能瓶颈、内存泄漏、CPU负载和解决线程相关的问题,支持本地和远程直接连接JVM,线上建议高峰期不要使用。VisualVM:同上

常用性能工具:工欲善其事,必先利其器相关推荐

  1. JVM - 工欲善其事必先利其器之虚拟机工具(下)

    文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...

  2. 工欲善其事必先利其器,网红营销找对工具才是营销王道

    工欲善其事必先利其器 网红目前是大家常用的一个营销推广渠道,要精准地找到与自己行业及产品相匹配的网红资源,光靠拼时间拼人力是远远不够的,我们也要掌握一定的工具来辅助我们更有效率地工作. 毕竟网红千千万 ...

  3. 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...

    目录: Oracle数据完整性和锁机制  索引及优化之表分析  表分析.约束及表间关系  Oracle体系结构1 Oracle体系结构2  海量数据库及分区1  海量数据库及分区2  海量数据库及分区 ...

  4. linux性能监控工具perf,Linux性能分析中常用的工具perf介绍

    今天小编要跟大家分享的文章是关于Linux性能分析中常用的工具perf介绍.系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶 ...

  5. 工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具

    工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具 坚持原创,写好每一篇文章 Apache Kylin的广泛应用还得益于它对很多软件都非常的支持,这篇文章我们将汇总一下Apache ...

  6. 常用性能压测工具实战总结

    ### 一.压测背景 >以前:未出社会之前经常用AB工具来压测自己的 nginx 欢迎页面,看着服务器的资源从20%到100%,发现原来一个开源的工具都可以把一台4C8G的虚拟机压爆满,然后就陷 ...

  7. Android常用逆向工具总结(未完待续)

    写在前面的话 突然觉得我好无聊,写这个有种浪费生命的感觉有没有,不过项目结束的时候这个还是要写的,以后写还不如现在趁现在,趁着现在链接就在身边直接写了. 1.apktool的安装和使用 1.1 apk ...

  8. 高效程序员常用的工具

    工欲善其事,必先利其器 FreeCommander - 多页的window资源管理器,用于记住你常用的文件夹  http://www.freecommander.com/ FreeCommander ...

  9. github 著名php,工欲善其事必先利其器,盘点Github上那些优秀的PHP项目

    工欲善其事必先利其器,作为一个开发者,了解并使用前人造好的轮子能让我们的开发事半功倍,在这里老宅整理了几个Github上有趣的php项目与大家分享. swoole Github仓库名称:swoole/ ...

  10. 工欲善其事必先利其器,IDEA必装插件!

    工欲善其事必先利其器,IDEA必装插件! 代码缩略图 CodeGlance 推荐指数:★★★★★ 用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航 ...

最新文章

  1. 模型大小 与参数量计算
  2. matlab中调用cplex 以及使用 Yalmip 工具箱
  3. 深入理解函数式编程之柯里化
  4. 基础训练——合并电话簿
  5. word List 47
  6. 深度学习《VAE-GAN》
  7. Pitch,Yaw,Roll的概念
  8. 前端性能优化—回流与重绘
  9. CSS系列之字体相关的样式
  10. 85 缓存, 验证码 序列化
  11. 数据类型--Number类型
  12. virtuoso 安装与使用
  13. Android5.1下拉状态栏新增截屏功能
  14. make: texi2dvi command not found 解决方法
  15. VS2013中F#的新特性
  16. 基金经理研究所 | 从兴全合润看谢治宇的攻守道
  17. SDUT 2504 多项式求和
  18. GitChat · 前端 | Webpack 工程的 PWA 实战
  19. 2.3、JavaScript 数据类型 - 数字类型
  20. 2022最新网络安全零基础学习路线

热门文章

  1. python项目实战:免费下载kugou任意付费音乐
  2. 解决Can not add resource (com.android.aaptcompiler.ParsedResource@a980fbb) to table
  3. 秒杀系统中乐观锁(Optimistic Lock)和悲观锁(Pessimistic Lock)的对比
  4. 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
  5. 华硕主板怎么进入bios
  6. SSMS 实用小技巧
  7. Python爬虫第四课 appium和第MongoDB数据库
  8. reinterpret_cast、static_cast、dynamic_cast和const_cast,区别
  9. 用sk-learn实现新闻的分类预测(完整代码)
  10. PAT甲之初窥门径(上)