卓越性能 の 军火库(非广告)
不羡鸳鸯不羡仙,一行代码调半天。原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。
在介绍性能优化的军火库之前,先来扯几句题外话。希望这些题外话,能打消你追求卓越性能的理想,来甘心当一枚圆滑的钉子。
我是非常不推荐程序员,对公司的业务,进行性能优化的。说这话,纯粹是基于个人自身安全考虑。因为性能优化,在大多数公司,属于费力不讨好的工作项。
追求极简的代码,性能卓越的代码,是有追求的程序员的目标。但随着经历了大大小小的公司,我发现很多优秀的程序员,在经受着这种追求的反嗜,以至于痛不欲生。
有下面几点原因,虽然我们知道它肯定是错的,但我们无能无力:
公司按照完成的功能,对程序员进行考核。性能优化属于额外的工期,也就是浪费成本的一种存在。
团队不Care程序运行的效率,慢一点无所谓,等出问题了再救火就行。
性能优化的风险大,通常要调整代码结构,甚至修改代码逻辑。不优化可能没事,一优化可能出事,没人愿意碰。
就一句话,整个团队深陷进行时
泥潭,没有展望性
思想,大家就那么浆糊着,得过且过。
以上是很多公司的现状,尤其集中在中小型公司。在这种公司里,除非系统慢到极点,优化之后有效果,或者领导要求你这么做,否则我都不建议你去碰。如果你执意如此,惹火烧身的时候不要后悔。
当然,有很多团队的技术氛围还是很nice的,甚至在代码review的时候,都会提出一些更优的建议。遇到这样的团队,就要珍惜,我们的军火库,毫无疑问是为了这些团队而准备的。
Brendan D. Gregg
大叔,天马行空过《性能之巅》这本书。但这本书的内容有点深,很多工具都是从资源层面进行分析的。他更广为人知的一张图,就是下面这张工具的集合。当然还有现在无处不在的火焰图。
这密密麻麻的工具,都是偏低层的,大多数时候,我们用不到。所以xjjdog
整理了一个稍微上层的,靠近平常使用习惯的军火库。大多数工具,你不需要再使用yum
或者apt
安装,都是自带的。
通用问题发现
如上图,就是xjjdog平常所使用的性能问题排查工具集合,可以排查一些通用的性能问题,比如CPU、内存、网络、I/O等。
大多数监控系统,抓取的也都是这些指标。由于这些性能数据都是发生在某一时间
的,所以都只能排查问题发生当时
的一些性能数据。强烈建议使用监控系统保存这些历史数据,可以进行问题追随,不用再傻乎乎等着问题复现了。
专用工具
不过,再怎么看,上面的这些工具也太零散了,学习的成本比较大,还需要记忆很多参数配置,才能再救火
的环境中反应灵敏。
比较幸运的是,有一些可以获取性能概览的工具可以帮助我们减少脑细胞的损耗。
就拿top来说,有经验的同学,仅凭这一个命令,就能够判断系统中的资源,是否达到了瓶颈。这样的工具还有vmstat、sar、nmon等。尤其是nmon,是一个老牌的性能汇总工具,能够自动生成压测期间所产生的性能报告。
这里面的几个性能深挖工具,学习曲线有点陡峭,但一旦掌握必使你产生主宰的感觉。但很多时候轮不到它们上场,因为总有一种大炮打蚊子的感觉。
Java专用工具
但是不要忘了,我们是搞Java的,碰到的性能问题,多属于JVM层面的。就拿perf这个工具来说,很强大,可以追踪到每一个c语言的函数调用的次数和耗时,但对Java来说是没用的,它生成的火焰图也没用。
所以Java自有一套这样的解决方案。
不仅有,而且更强大。尤其推荐jmc集成的JFR功能,这个记录的信息可真是太详细了。
单机环境下,arthas是调试单机调用耗时的好工具,我不止一次使用它的trace
命令完成了性能调优。在分布式环境下,skywalking类似的分布式调用链工具,也能助我们一臂之力。
END
有人可能觉得,我们上面列出的这些工具命令,实在是太多了,学不完,其实不是这样的。
在遇到性能问题,想要找到它的具体原因之时,你才会恨手头的工具太少,以至于期望有更加强劲的工具。
书到用时方恨少,事非经过不知难。
作为工程师,我们的工作,就是从这诸多的工具里,选择合适的组合,直捣黄龙。
当然,如果你捣的不太对,那后果就不太好了。参考文章开头的题外话,永远不要抢着去做这种费力不讨好的事情。性能优化这个东西,是一把双刃剑。可能会让你扶摇直上,也可能会让跌入谷底,一切和你所处的团队有关。
作者简介:小姐姐味道 (xjjdog),一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。我的个人微信xjjdog0,欢迎添加好友,进一步交流。
推荐阅读:
一图解千愁,jvm内存从来没有这么简单过!
失联的架构师,只留下一段脚本
架构师写的BUG,非比寻常
nginx工程师,需要上承天命,下召九幽
实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
又一P1故障,锅比脸圆
传统企业的人才们,先别忙着跳“互联网”!
面试官很牛,逼我尿遁
又一批长事务,P0故障谁来背锅?
一天有24个小时?别开玩笑了!
《程序人生》杀机!
可怕的“浏览器指纹”,让你在互联网上,无处可藏
2w字长文,让你瞬间拥有「调用链」开发经验
996的乐趣,你是无法想象的
作为高级Java,你应该了解的Linux知识(非广告)
必看!java后端,亮剑诛仙(最全知识点)
学完这100多技术,能当架构师么?(非广告)
Linux上,最常用的一批命令解析(10年精选)
数百篇「原创」文章,助你完成技术「体系化」
▼
卓越性能 の 军火库(非广告)相关推荐
- 卓越性能代码_编程语言性能实测,Go比Python更胜一筹?
作者 | Pawel Dziubałka, Sebastian Karasiewicz 译者 | 泓技 出品 | AI科技大本营(ID:rgznai100) 互联网上有非常多的精彩代码,它们成了构建各 ...
- Linux运维最新关注!如何为自己打造一个 网络安全军火库 ?
最近,黑客又开始兴风作浪了,曼联直遭殃 前几天,英国顶级足球俱乐部曼彻斯特联队,披露其内部系统发生网络安全事件--被黑客访问IT网络,并窃取了俱乐部球迷的数据,数百名女性体育明星的私密照.视频在线泄露 ...
- 卓越性能代码_开启win10隐藏的“超级性能模式”
微软总是悄悄给Windows 10 加一些新功能,又不大肆宣传,导致很多朋友感觉Windows 10不过是换了一套UI的Windows 7甚至XP. 今天来分享一个隐藏起来的"超级模式&q ...
- 卓越性能代码_「Win」被隐藏起来的卓越性能模式,为何不想让人发现?
前言: 众所周知,电脑电源管理中包含三大模式,分别是:节能模式.平衡模式.高性能模式,其对电脑的性能影响还是比较大的,但是今天所说的"卓越性能模式"应该很多人都没听说过,又是何方神 ...
- 卓越性能代码_装好win10后,应该这样设置,才能压榨出系统十足的性能
用了这么久win10系统,你知道在win10中有不同的性能模式吗?而使用不同的性能模式会消耗不同的电量,就会为系统提供不同的性能.为了拥有好的性能,我们一般会在电源选项中给系统设置为高性能模式,但你以 ...
- win10卓越性能模式,提升电脑性能
Win10隐藏了一个电源模式"卓越性能",是比"高性能"模式更强性能的电源模式. 这个模式开启后,电脑到底有没有变快呢?心理上是快了. 开启步骤 1.鼠标移到开 ...
- 在桌面右键菜单添加【切换电源计划-卓越性能】选项
本文在参考<在桌面右键菜单添加[切换电源计划]选项>和<微软又立功了!通过修改电源设置提升dnf性能的方法!>两篇文章的基础上修改而来 旨在打开Win10卓越性能的基础上可以在 ...
- 【非广告】2021 入门级的 Java 程序员学习路线图 1.0
Hello,大家好,我是阿粉,最近看文章发现一个 Java 学习路线图的资料,觉得很不错就拿过来分享给大家,目前这个版本是 1.0 的,之所以说这个是 1.0 的版本主要是因为还有一些高级内容没有加进 ...
- 非广告|如何在碎片化时代成为无可取代的人
本文转载自公众号:程序视界 船长导读:这是一篇关于<深度工作>的文章,书我也看过,内容值得学习,本文作者取得标题有点像广告,于是我加了"非广告",哈哈. 1981年7月 ...
最新文章
- vn.py 2.0.2 发布,全功能交易程序开发框架
- iOS11和iPhone X的适配
- 35岁之后,你还会继续写代码吗?
- k8s往secret里导入证书_K8S之Secret
- Vaadin和DukeScript中的Hello World
- 快速向服务器传文件格式,客户端如何向服务器传文件格式
- SSH安全登陆原理:密码登陆与公钥登陆
- SQL server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法...
- 图书馆管理系统(C语言实现)
- speedoffice(word)如何批量让字体大一号
- 神经网络的双曲线正切激活函数
- 怎么查看和下载高清谷歌卫星地图
- 3DMAX制作载具模型导入UE4导致轮子无碰撞解决方案
- excel筛选查询函数
- autojs各种插件以及教程模板
- 记录每天学习的新知识:LiveData
- Android设备root及xposedPrivacy的安装
- ae渲染存在偏移_以后请不要问我AE和PR有什么区别了...
- python atm作业详解_Python小案例--ATM系统
- Slurm如何应对超大作业的NSS压力?
热门文章
- 计算机应用与上机实践,《大学计算机应用基础》各章习题与上机实践参考答案或答题说明.doc...
- 中专毕业计算机基础考试试题,中职《计算机基础》课程标准
- python 镜像源配置
- 【CF979D】 Kuro and GCD and XOR and SUM
- 支持兆芯cpu的linux,AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU
- angular指令心得(ng-model)
- 清华大学首个原创虚拟学生!“华智冰”入学清华!
- 《周志明的软件架构课》学习笔记 Day5
- JVM之类加载机制(基于《深入理解Java虚拟机》之第七章类加载机制)(上)
- 大体肌肉解剖必学45个肌肉