常用性能工具:工欲善其事,必先利其器
背景
随着业务量的飙升,公司的系统由于早期待为了业务高速迭代,从精益思维的角度,快速开发,留下了很多历史包袱(或者性能bad code),导致性能问题频出,这篇文章,主要梳理一些常用的性能工具,后续会更新一些排查性能问题的通用思路。
Linux 下常用的性能工具
一般来将,笔者的业务均是部署在linux服务器,这里不得不考虑,操作系统层面的性能排查。
Linux系统分析的工具集:
Brendan Gregg http://www.brendangregg.com/linuxperf.html
大家详细的可以去网站查看。上面图中提到的是linux各个层面:应用层、系统层、驱动层、网络层,及对应的各种排查命令,这里不再一一介绍,点进去链接,保证你收货颇丰。
Java自带的性能排查工具
- jstack 抓取当前堆栈信息,主要用于查看java中的线程都在做什么,非常适用于排查系统响应慢、CPU偏高,是否存在热锁等一系列的问题。大家可能都只知道jstack,不过建议大家也看下jstack的一些辅助参数,jstack默认只能看到Java栈,而jstack -m则可以看到线程的Java栈和native栈。
通常我们会通过linux 命令 top -H 和 jstack 去定位一些cpu执行较高的问题。另外推荐两个linux的命令
pstack 和 perf pstack可以用来看Java进程的native栈,perf linux性能分析超级利器。 - 内存相关命令:
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自带的性能排查工具,在一些明显问题的排查上非常快捷,另一方面也是快捷获取线上系统状态快照,便于用利器进一步分析。
进一步的利器
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:同上
常用性能工具:工欲善其事,必先利其器相关推荐
- JVM - 工欲善其事必先利其器之虚拟机工具(下)
文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...
- 工欲善其事必先利其器,网红营销找对工具才是营销王道
工欲善其事必先利其器 网红目前是大家常用的一个营销推广渠道,要精准地找到与自己行业及产品相匹配的网红资源,光靠拼时间拼人力是远远不够的,我们也要掌握一定的工具来辅助我们更有效率地工作. 毕竟网红千千万 ...
- 高级SQL优化(三) 常用优化工具 ——《12年资深DBA教你Oracle开发与优化——性能优化部分》...
目录: Oracle数据完整性和锁机制 索引及优化之表分析 表分析.约束及表间关系 Oracle体系结构1 Oracle体系结构2 海量数据库及分区1 海量数据库及分区2 海量数据库及分区 ...
- linux性能监控工具perf,Linux性能分析中常用的工具perf介绍
今天小编要跟大家分享的文章是关于Linux性能分析中常用的工具perf介绍.系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶 ...
- 工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具
工欲善其事必先利其器,Apache Kylin原来支持这么多可视化工具 坚持原创,写好每一篇文章 Apache Kylin的广泛应用还得益于它对很多软件都非常的支持,这篇文章我们将汇总一下Apache ...
- 常用性能压测工具实战总结
### 一.压测背景 >以前:未出社会之前经常用AB工具来压测自己的 nginx 欢迎页面,看着服务器的资源从20%到100%,发现原来一个开源的工具都可以把一台4C8G的虚拟机压爆满,然后就陷 ...
- Android常用逆向工具总结(未完待续)
写在前面的话 突然觉得我好无聊,写这个有种浪费生命的感觉有没有,不过项目结束的时候这个还是要写的,以后写还不如现在趁现在,趁着现在链接就在身边直接写了. 1.apktool的安装和使用 1.1 apk ...
- 高效程序员常用的工具
工欲善其事,必先利其器 FreeCommander - 多页的window资源管理器,用于记住你常用的文件夹 http://www.freecommander.com/ FreeCommander ...
- github 著名php,工欲善其事必先利其器,盘点Github上那些优秀的PHP项目
工欲善其事必先利其器,作为一个开发者,了解并使用前人造好的轮子能让我们的开发事半功倍,在这里老宅整理了几个Github上有趣的php项目与大家分享. swoole Github仓库名称:swoole/ ...
- 工欲善其事必先利其器,IDEA必装插件!
工欲善其事必先利其器,IDEA必装插件! 代码缩略图 CodeGlance 推荐指数:★★★★★ 用过sublime Text的都知道它第一印象就是编辑器最右边有一个缩略图,可以很好的对代码进行导航 ...
最新文章
- 模型大小 与参数量计算
- matlab中调用cplex 以及使用 Yalmip 工具箱
- 深入理解函数式编程之柯里化
- 基础训练——合并电话簿
- word List 47
- 深度学习《VAE-GAN》
- Pitch,Yaw,Roll的概念
- 前端性能优化—回流与重绘
- CSS系列之字体相关的样式
- 85 缓存, 验证码 序列化
- 数据类型--Number类型
- virtuoso 安装与使用
- Android5.1下拉状态栏新增截屏功能
- make: texi2dvi command not found 解决方法
- VS2013中F#的新特性
- 基金经理研究所 | 从兴全合润看谢治宇的攻守道
- SDUT 2504 多项式求和
- GitChat · 前端 | Webpack 工程的 PWA 实战
- 2.3、JavaScript 数据类型 - 数字类型
- 2022最新网络安全零基础学习路线
热门文章
- python项目实战:免费下载kugou任意付费音乐
- 解决Can not add resource (com.android.aaptcompiler.ParsedResource@a980fbb) to table
- 秒杀系统中乐观锁(Optimistic Lock)和悲观锁(Pessimistic Lock)的对比
- 魔方机器人需要特制魔方吗_大开眼界:会玩魔方的机器人
- 华硕主板怎么进入bios
- SSMS 实用小技巧
- Python爬虫第四课 appium和第MongoDB数据库
- reinterpret_cast、static_cast、dynamic_cast和const_cast,区别
- 用sk-learn实现新闻的分类预测(完整代码)
- PAT甲之初窥门径(上)