回复14 收藏
分享

性能之巅-优化你的步伐

2020-9-26 03:20 发布者: zl02605 阅读 4.9k 评论 14

outline:关注&指标&度量,根底理论知识,工具&方法,最好实践,参考资料性能优化关注:CPU、内存、磁盘IO、网络IO等四个方面。性能指标:吞吐率、相应时间、QPS/IOPS、TP99、资源利用率是我们常常关注的指标 ...


性能之巅-优化你的步伐


outline:关注&指标&度量,根底理论知识,工具&方法,最好实践,参考资料



性能之巅-优化你的步伐



性能优化关注:CPU、内存、磁盘IO、网络IO等四个方面。



性能之巅-优化你的步伐



性能指标:吞吐率、相应时间、QPS/IOPS、TP99、资源利用率是我们常常关注的指标。



性能之巅-优化你的步伐



时间度量:从cpu cycle到网络IO,自上到下,时间量级越大。



性能之巅-优化你的步伐



监控、分析、优化,三部曲,以终为始,循环往复。




性能之巅-优化你的步伐



优化性能,必要一些体系编程知识。



性能之巅-优化你的步伐



提拔处置惩罚本领、淘汰盘算量是优化的2个根本方向。



性能之巅-优化你的步伐



优化大家格雷格画的图,吊炸天,你应当很认识,gregg亲手实现了一些工具。



性能之巅-优化你的步伐



借助工具定位性能瓶颈。gprof2dot.py可以处置惩罚多种采样输出数据

发起利用perf等非侵入式的profiling工具。



性能之巅-优化你的步伐



perf不但仅可以定位cpu瓶颈,还可以检察许多方面,好比缺页,分支展望失败,上下文切换等。



性能之巅-优化你的步伐



IO瓶颈,你应当知道的知识。



性能之巅-优化你的步伐



有关锁的知识,你应当知道的。



性能之巅-优化你的步伐



多线程的学问很大




性能之巅-优化你的步伐



内存管理的方方面面



性能之巅-优化你的步伐



最好实践,没有充足来由,你不应当违反。



性能之巅-优化你的步伐



你应当懂得的。



性能之巅-优化你的步伐



关于排序,你应当知道的。



性能之巅-优化你的步伐


这些资料不错,你值得拥有。

假如对你有资助,请帮助转发,让更多朋侪收益。


  • 一样平常性原则
  • 依据数据而不是凭空推测
  • 忌过早优化
  • 忌过分优化
  • 深入明白业务
  • 性能优化是长期战
  • 选择适宜的权衡指标、测试用例、测试情况
  • 性能优化的条理
  • 需求阶段
  • 计划阶段
  • 实现阶段
  • 一样平常性方法
  • 缓存
  • 并发
  • 惰性
  • 批量,归并
  • 更高效的实现
  • 缩小解空间
  • 性能优化与代码质量
  • 总结

依据数据而不是凭空推测

这是性能优化的第一原则,当我们疑心性能有题目的时间,应当通过测试、日记、profillig来分析出那里有题目,对症下药,而不是凭感觉、撞运气。一个体系有了性能题目,瓶颈有大概是CPU,有大概是内存,有大概是IO(磁盘IO,网络IO),大方向的定位可以利用top和stat系列来定位(vmstat,iostat,netstat...),针对单个历程,可以利用pidstat来分析。

在本文中,首要讨论的是CPU相干的性能题目。按照80/20定律,绝大多数的时间都消耗在少量的代码片断内里,找出这些代码唯一可靠的办法就是profile,我所知的编程语言,都有相干的profile工具,纯熟利用这些profile工具是性能优化的第一步。

忌过早优化

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming.

我并不非常清晰Donald Knuth说出这句名言的上下文情况,但我本身是非常认同这个观念的。在我的工作情况(和典范的互联网运用英魂开辟)与编程模式下,寻求的是快速的迭代与试错,过早的优化每每是无勤奋。而且,过早的优化很轻易拍脑壳,优化的点每每不是真实的性能瓶颈。

忌过分优化

As performance is part of the specification of a program – a program that is unusably slow is not fit for purpose

性能优化的目的是寻求适宜的性价比。

在差别的阶段,我们对体系的性能会有肯定的要求,好比吞吐量要到达多少多少。假如达不到这个指标,就必要去优化。假如能满意预期,那么就无需耗费时间精神去优化,好比只有几十个人利用的内部体系,就不消按照十万在线的目的去优化。

而且,背面也会提到,一些优化方法是“有损”的,大概会对代码的可读性、可维护性有副作用。这个时间,就更不能过分优化。

深入明白业务

代码是效劳于业务的,大概是效劳于终究用户,大概是效劳于其他步伐员。不相识业务,很难明白体系的流程,很难找出体系计划的不敷的地方。背面还会提及对业务明白的紧张性。

性能优化是长期战

当焦点业务方向明白以后,就应当开始关注性能题目,当项目上线以后,更应当连续的举行性能检测与优化。

如今的互联网产物,不再是一锤子交易,在上线以后还必要连续的开辟,用户的涌入也会带来性能题目。因此必要主动化的检测性能题目,保持稳固的测试情况,连续的发现并办理性能题目,而不是被动地比及用户的投诉。

选择适宜的权衡指标、测试用例、测试情况

正由于性能优化是一个恒久的举动,以是必要固定权衡指标、测试用例、测试情况,如许才气客观反映性能的现实环境,也能揭示出优化的结果。

权衡性能有许多指标,好比体系相应时间、体系吞吐量、体系并发量。差别的体系焦点指标是不一样的,起首要明白本体系的焦点性能诉求,固定测试用例;其次也要分身其他指标,不能顾此失彼。

测试情况也很紧张,有一次忽然发现我们的QPS高了很多,但是步伐压根儿没优化,查了半天,才发现是换了一个更牛逼的物理机做测试效劳器。



路过

雷人

握手

鲜花

鸡蛋

评论|共 14 个

天外来客2020-9-26 04:20
转发了
回复
7感2020-9-26 04:15
转发了
回复
海丸美2020-9-26 04:11
转发了
回复
¢莫尐柒2020-9-26 04:07
转发了
回复
错过的期待2020-9-26 04:02
不错
回复
lunatic9992020-9-26 03:58
挺好的
回复
错过的期待2020-9-26 03:54
不错,感谢分享,盼望可以或许有更多的分享关于性能优化这块
回复
杰伦精神2020-9-26 03:50
看不清
回复
海丸美2020-9-26 03:45
ppt做的不错 不外也没啥干货。。给产物司理比力好用
回复
关平2020-9-26 03:41
这些图留着可以坐ppt参考,拓展思绪
回复
plthtx2020-9-26 03:37
我们效劳器天天不定时的负载会有10几分钟的负载突高 但cpu 内存 io 都没发现啥非常 这类环境是为啥呢?
回复
天外来客2020-9-26 03:32
个人性能优化另有一个关注点:锁。偶然会发现呆板资源另有空闲,但是性能提不上去,一样平常就是锁
回复
天外来客2020-9-26 03:28
ppt能发一下吗
回复
杰伦精神2020-9-26 03:24
不是说会有一个优化实例吗?
回复

查看全部14个评论

您需要登录后才可以发表言论 登录立即注册
得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 站长技术交流论坛|互联网技术交流平台|Ai技术交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 扫一扫添加QQ客服 返回顶部
返回顶部