前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈 Linux 性能优化

谈谈 Linux 性能优化

作者头像
iMike
发布2019-06-11 17:54:04
1.3K0
发布2019-06-11 17:54:04
举报
文章被收录于专栏:运维之美

无论你是运维还是开发,可能都经历过这样的场景:

流量高峰期,服务器 CPU 使用率过高报警,你登录 Linux 上去 top 完之后,却不知道怎么进一步定位,到底是系统 CPU 资源太少,还是程序并发部分写得有问题? 系统并没有跑什么吃内存的程序,但在敲完 free 命令之后,却发现已经没什么内存了,到底是哪里占用了内存?为什么? 一大早就收到 Zabbix 告警,你发现某台存放监控数据的数据库主机 CPU 的 I/O Wait 较高,该怎么办?

面对这样的场景,你愿意束手无策等待帮助,还是游刃有余庖丁解牛?

性能优化是软件系统中最有挑战的工作之一,就算看了很多资料和书籍,一旦涉及到解决具体问题,还是会一脸懵逼。

大多数时候,我们只能看到“症状”,却不知道从哪儿下手排查和解决。

极客们常说,只有知道一件事物的原理,它才是有用的东西。

Linux 性能优化是个系统工程,除了要学习那些基础知识点之外,还有 2 点比较重要:

  • 掌握性能优化的思路和方法,尝试大量 Linux 性能工具;
  • 从学习到输出,说白了就是不断实践,从实践中总结经验。

这样,你才能把观察到的性能问题跟系统原理关联起来,特别是把应用程序、库函数、系统调用、内核和硬件等不同的层级贯穿起来。

说到性能工具,就不得不提性能领域的大师布伦丹·格雷格(Brendan Gregg)。他不仅是动态追踪工具 DTrace 的作者,还开发了许许多多的性能工具。

我相信你一定见过他所描绘的 Linux 性能工具图谱

△ 图片来自 brendangregg.com

这个图是 Linux 性能分析最重要的参考资料之一,它告诉你在 Linux 不同子系统出现性能问题后,应该用什么样的工具来观测和分析。

比如,当遇到 I/O 性能问题时,可以参考图片最下方的 I/O 子系统,使用 iostat、iotop、blktrace 等工具分析磁盘 I/O 的瓶颈。

为了让你对性能有个全面的认识,可以看看下面这张思维导图,里面涵盖了大部分性能分析和优化都会包含的知识。

△ Linux 性能优化思维导图

另外,我还要特别强调一点,就是性能工具的选用。

有句话是这么说的,一个正确的选择胜过千百次的努力。虽然夸张了些,但是选用合适的性能工具,确实可以大大简化整个性能优化过程。

但切记,千万不要把性能工具当成学习的全部。工具只是解决问题的手段,关键在于你的用法。

只有真正理解了它们背后的原理,并且结合具体场景,融会贯通系统的不同组件,你才能真正掌握它们。

对于我们大多数人来说,最好的学习方式一定是带着问题学习,而不是先去啃那几本厚厚的原理书籍,这样容易把自己的信心压垮。

我认为,学习要会抓重点,只要你了解少数几个系统组件的基本原理和协作方式,掌握基本的性能指标和工具,学习实际工作中性能优化的常用技巧,你就已经可以准确分析和优化大多数的性能问题了。

在这个认知和基础上,再反过来去阅读那些经典的操作系统或者其它图书,才能事半功倍

去年年末那会儿,我看极客时间出了个《Linux 性能优化实战》专栏,作者是倪朋飞,上面那张详细的知识图谱就是他画的。

抱着试试看的态度我订阅了,然而平时工作太忙,最近才陆陆续续追完,感觉收获很大,帮我解决了工作中的一些实际问题

这两年知识付费泛滥,这个专栏是其中的一股清流了,可以负责地说,这是我在知识付费中收获最大的一门课,这里 Mike 推荐给你。

课程大概有 60 讲,讲了 Linux 性能的基本指标、工具,以及相应的观测、分析和调优方法,用实际案例贯穿了从应用程序到操作系统的各个组件。

我看上线也不过 几个月,已经有近 2W 人订阅了,截了一些评价,可以参考看看:

作者是微软的 Azure 资深工程师,主要负责开源容器编排系统 Kubernetes 在 Azure 的落地实践。

哥们有着近 10 年的云计算工作经验,所以对 Linux 性能优化这套东西有一些自己的思考和沉淀。

除了内容硬核以外,还有 2 点不得不提:

1、讲解得很成体系,每一章节都有基础篇、案例篇和套路篇,选的案例比较有针对性,基本都是工作中用得上的,「套路篇」就更别说了,有好几篇我看了不止一遍。

2、倪朋飞不仅会回答大家提出的问题,还会针对那些有代表性进行公开答疑,确实挺走心。

说真的,光看评论区也能收获不少,自己的认知还是有局限性,有些问题现在没碰到,不等于以后不会出现。

结合目录我总结了一下,要把这个硬核的专栏「啃下来」,你能获得下面这些知识

  • 掌握 Linux 必备的基本原理以及 Linux 系统必懂的性能指标(CPU、磁盘 I/O、内存以及网络)和性能工具。
  • 结合实际案例分析,让你在遇到资源瓶颈时不再束手无策,学会观测和准确定位、快速分析并高效优化,具备高手解决性能优化问题的思路和全局观。
  • 五个综合实战模块还原真实的工作场景,结合开源项目、框架或者系统设计的案例,手把手带你在「高级战场」演练,目的是让你把之前学到的所有知识融会贯通,马上能将所学应用在工作当中。
  • 针对订阅用户会设置答疑篇章,作者针对典型问题,进行公开答疑解惑。

说了半天,看看目录吧:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇妙的Linux世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档