性能优化从来不是一件容易的事,学习相关知识自然也并不轻松。专栏更新至今,大家已经学习了五十多个案例和知识点。一路以来,有汗水有喜悦,有困难也有收获。你又是如何度过的呢?
这一期,我们邀请到了专栏学习期间,无论留言还是打卡都比较活跃的几个同学,让他们讲出自己的学习故事,分享自己的学习心得。
我是非计算机相关专业毕业的程序员,由于对编程很感兴趣而加入了程序员的大军。因为C语言学得很扎实,有幸在毕业后找了一份“码农”工作。从09年毕业到现在,我一直在武汉一家休闲游戏公司,从事休闲游戏服务端的开发,还没有换过工作。
作为服务端的开发人员,在平常工作中,我难免会遇到线上程序出现性能问题。跟不少人一样,我以前的分析方法比较“原始”。
有时候我完全靠猜,比如从最近的变动入手,推测可能是什么程序导致的。当然,确定了程序后,偶尔也会用二分法,找出哪部分代码是“罪魁祸首”。
有时候我也会查看一些Linux性能指标,不过,以前确实只会用top和vmstat,看看CPU负载、内存、磁盘、软中断等简单的性能指标。只有遇到具体的某个指标异常时,我才会“谷歌一下”分析方法。
显然,这样解决起“新”问题来,很不及时,也并不准确;而靠着“踩坑”来学东西的成本也有点高。不过,以前确实没能找到实惠又系统的学习方法,这一方面也只能久久搁置着。
碰到极客时间应该说是一种幸运。在极客时间上学了《从0开始学架构》《Go语言核心36讲》《数据结构与算法之美》等专栏后,我对专栏的质量很有信心。
所以,当《Linux性能优化实战》专栏出来的时候,我看到副标题“10分钟帮你找到系统瓶颈”,就毫不犹豫地购买了。当然,结果也没有令我失望,可以说是收获满满。
还记得,在学本专栏的《CPU性能篇》时,公司的服务器从某里云平台切换到了某迅云。没想到的是,刚学过的知识就立刻派上了用场。
之前服务器1分钟的平均负载一直在1以下,切换云以后,突然间歇性地升高到了14;就连5分钟的平均负载,都升高到了8。虽然业务暂时没有受到明显的影响,但本着负责的态度,再加上正在学习本专栏,我就想着用现学知识来分析一下原因。
我先收集了高负载时的软硬中断数、磁盘I/O、CPU负载、运行中的进程及线程等指标,确认了各项指标平稳,与低负载时无明显变化。因为把可能导致平均负载升高的指标都排查了一遍,运行中的程序队列也看过了,所以我首先排除了自身原因。
后来,结合观测时收集到的信息,我发现该负载的升高很有规律,几乎是间隔固定的时间触发一次,持续时长也很固定。而这个现象持续了近半个月后,在部署程序没有任何调整的情况下,服务器的平均负载又恢复了正常,负载再未出现异常升高的现象。
虽然我最终没能找到具体原因,但经过系统性的排查,明确排除了自身程序的嫌疑,知道了解决问题的方向。这对我来说,是个不小的进步。
其实在极客时间,我订购了不少专栏,有些专栏知识平常用的并不多,我就会粗学。而这个专栏,跟我的工作非常紧密,讲得也非常条理易懂,所以我一直学得比较细,专栏里的每个案例都会跟着老师过一遍。
我会用老师介绍过的性能工具,在生成环境中试试,看有没有指标异常,防患于未然。这样,在解决性能问题时,我就从以前的“被动应战”,变为现在的“主动出击”。即使是遇到突发情况,也能很快地定位大致位置。
另外,老师在留言和学习群里,都非常积极地解答同学们的疑惑,也让我学到了不少。可能是我的接触面有限,我觉得把老师专栏中的知识吃透,就足够我用了。 我会继续反复学习,把这些知识变成我自己的能力,希望大家也能有同样多的收获。
我目前在北京,是一枚pythoner,参加工作已经三年多了。我的第一份工作是做web相关的开发,第二份工作则是做物联网后台开发。
就现阶段而言,开发上涉及到的业务方面比较多,对性能方面还没有过高要求。不过,如果想成为更优秀程序员的话,还是希望能在这方面有所提高,而不只是会应用而已。另外,因为我并不是计算机专业出身,平常也只看过一些Unix和Linux的书,所以想更系统、全面地有所提高。
我平常会利用上下班的地铁时间来学习专栏,因为自己对容器比较感兴趣,所以如果遇到相关内容,我就会比较系统地去操作和了解一下。毕竟,技术还是需要实际操作的,虽然目前来说,我还只是“见招拆招”的水平。
在学习专栏过程中印象比较深的是,老师特别负责和严谨的态度。有什么问题去问老师,老师都会尽快给出解决方案,而且有一次,还特意给封装了一份docker镜像,一次不行就又来了一次,很认真也很耐心。在这里,我先给老师点个赞。
虽然我目前没有跟上进度每篇都打卡,但是肯定不会放弃,会坚持努力去学习的,就像其他同学所说的,会有所收获。
作为一个买了三十多个专栏的极客时间老用户,我能感觉到,极客时间还是很用心地在做一件事情,而自己也跟着学习成长了。能让读者和作者很好交流,这一点真的很赞,很用心。希望我们大家共同进步吧,真的向极客出发。
我大学专业是化学,在2016年进入一家做政府网站的公司,担任实施工程师,职责就是教客户如何使用网站后台,技术含量几乎为零。2017年,我决定学习Linux,报了线上的培训班,在18年一月份终于学完,并于四月份跳槽成为了一名运维工程师。
对我而言,服务器性能调优是绕不过去的坎,这也是运维知识体系中最底层并且最难的一部分。在专栏学习中,这部分知识点主要氛围四个模块:CPU、内存、磁盘、网络,每个模块的学习又分成三步走:原理、指标、优化。
原理是最核心的,尤其是针对我这种半路出家,也没学过计算机原理和C语言的同学。这也是我学这个专栏,花费时间最多的地方。因为基础欠缺比较多,我还是要依靠百度和谷歌搜索给自己答疑解惑。不过尽管如此,在基础原理部分还是会有不理解的地方,这些一般就要选择性地跳过了,毕竟,过分地追究原理,也会严重影响性能学习的进度。
第二个指标,主要通过工具来获取,是定位问题和调优的依据。其实一些指标的要点,多看工具手册就能掌握,但重点是将指标和工具联系起来。这一点,在学完专栏后可以说是“神清气爽”,因为每个总结都很清晰到位。
最后的优化部分,先要根据性能指标找出问题,然后根据原理进行优化,最后再用工具衡量优化效果。这部分需要大量的经验,专栏中的案例也可以作为练手的好素材。
目前,性能优化专栏已经接近尾声,大部分内容学完后,我的收获很大。从开始学习到现在,我通过专栏中的方法,找到并解决了服务器上部分性能问题。这要是换做以前,我肯定不能这么“快准狠”地定位到问题。
在这里,我非常感谢专栏作者倪朋飞老师,如果不是刚好学到了这个专栏,想要掌握这些知识点和经验,花费的时间肯定要多很多。对我而言,时间就是钱,这个专栏真的是帮我省了一大笔钱。
当前网络上的大部分学习资料,要么不成体系,要么水平只是入门级,要么就是不够权威和准确。极客时间能邀请到这么多大佬开设专栏,确实是我这种学习者的福音。希望极客时间能越做越好,能将更多的知识带给更多的学习者。