专栏首页运维之美谈谈 Linux 性能优化

谈谈 Linux 性能优化

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

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

说了半天,看看目录吧:

本文分享自微信公众号 - 运维之美(Hi-Linux),作者:Mike

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 轻松玩转 MySQL 8.0 源码编译

    此前我最后一次编译 MySQL 源码大概 10 年前了,再后来有人问我怎么编译源码安装,我一般都是建议直接下载二进制包安装,其实真挺方便的,性能上的损失也是微...

    iMike
  • 揭秘:微信 / 微博 / 头条 / 快手是如何轻松处理亿级规模的 Feed 流的?

    差不多十年前,随着功能机的淘汰和智能机的普及,互联网开始进入移动互联网时代,最具代表性的产品就是微博、微信,以及后来的今日头条、快手等。这些移动互联网时代的新产...

    iMike
  • Linux 正在吞噬 Windows 和 Chrome OS!

    Windows 10 和 Chrome OS 都采用 Linux 内核及其上运行的软件。

    iMike
  • 徐妈说,他常常因为不太会 Linux 而感到难过

    作为一个程序员,性能优化是无法避开的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应用还是分布式系统,并且性能优化也是软件系统中最有挑战的工...

    芋道源码
  • 从小白做起怎样运营好你的小程序商城

    如今小程序+社交电商已经成为电商行业的标配,也成为各大公众号平台实现变现的新型方式。而CRMEB全新推出小程序社交电商解决方案,就是为了帮助商家搭建以“小程序+...

    知道
  • 说真的,前端对Linux需要了解到什么程度?

    还记得土哥刚入行,进第一家公司实习的时候,使用的是Win7,对于Windows下的命令行体验真是无力吐槽,特别是对于Web前端来说,非常多的工具都运行在终端内,...

    闰土大叔
  • 金融黑客的惯用手段 MITB

    所谓的 MITB 技术就是 man-in-the-browser 的简称,也就是浏览器中间人攻击方式。我们先来回顾一下经典的中间人攻击方式。

    信安之路
  • 跟大神一起十五分钟制作一个属于自己得Linux操作系统!

    Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内...

    马哥linux运维
  • 不要在问Linux优化从何入手了,好好看看

    作为一个程序员,性能优化是无法避开的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应用还是分布式系统,并且性能优化也是软件系统中最有挑战的工...

    用户1634449
  • 用互联网规律做传统营销:谈谈地推的4方式4关键

    区域推广,也可以理解为地推,包含线下推广,线上运营两部分,二者相互关联影响,简单的解释就是用互联网规律做事的传统销售。

    大葡萄

扫码关注云+社区

领取腾讯云代金券