必须了解的Linux性能基础知识( 五 )


 

必须了解的Linux性能基础知识

文章插图
 
从 uptime 更新时间长短可以发现,很多服务在不断地重启 。可能是服务配置或者代码问题引起的 。其实是批量的服务出现配置问题导致了服务启动失败,然后 supervisor 监控到服务没有成功启动后又自动重启 。在解决完这些服务问题后,通过 top 再次看看性能情况:
$ topTasks: 2012 total,7 running, 2002 sleeping,0 stopped,3 zombieCpu(s): 29.7%us,5.4%sy,0.0%ni, 63.5%id,0.8%wa,0.0%hi,0.5%si,0.0%stMem:98979248k total, 96231348k used,2747900k free,1470892k buffersSwap:0k total,0k used,0k free, 60741708k cachedPID USERPRNIVIRTRESSHR S %CPU %MEMTIME+COMMAND13159 user200 9131m 6.2g13m S806.6 160593:01 mongod27545 user200 41880 6636 2896 S610.00:01.86 Python/ target=_blank class=infotextkey>Python27549 root200929m 882m616 R380.90:01.15 supervisord...总结在动手进行性能优化前,需要考虑以下几个问题:
  • 如何判断优化是有效的呢?
  • 有多个性能问题同时发生时,应该先优化哪一个?
  • 提升方法有多种时,应该选择哪一种?
对于第一个问题,我们解决性能问题的目的,自然有一个性能提升的效果,即要对性能指标进行量化,需要确认优化前指标、优化后指标 。当优化后指标与优化前指标有不同时,才能判定我们的优化有没有效果 。比如上述例子中的系统CPU使用率优化前后的变化 。
对于第二个问题,有一个 “二八原则”,也就是 80% 的问题都是由 20% 的代码导致的 。因此,并不是所有的性能问题都值得优化 。在动手优化前,往往需要把所有性能问题分析一遍,找出最重要的、可以最大程度提升性能的问题 。这个过程会花费较多的时间,下面有两个可以简化这一过程的方法:
  • 如果发现出现系统瓶颈问题,那么首先优化的一定是系统资源问题 。
  • 针对不同类型的指标,首先要去优化那些性能指标变化幅度最大的问题 。
对于第三个问题,一般来说,应该选择能最大程度提升性能的方法 。但是需要注意的是,性能优化并非没有成本,很有可能你优化了一个指标,另一个指标的性能就变差了 。
参考
  • https://time.geekbang.org/column/article/69618
  • https://time.geekbang.org/column/article/69859
  • https://time.geekbang.org/column/article/70476
  • https://time.geekbang.org/column/article/72147
  • http://www.lyyyuna.com/2020/05/29/perftest-analysis-cpu1/
  • https://juejin.cn/post/6844903608371118094
  • https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/top.html




推荐阅读