阿里资深软件测试工程师总结的这几点,让小白轻松搞懂性能调优( 三 )


应用程序(Nginx、MySQL ……)
 
1.硬件
硬件优化一般也包括两块:
 
上线前(硬件选型)
上线后(硬件扩展)
 
一般项目搭建时都需要根据具体的应用进行硬件配置选型,在这方面需要一定的运维经验刚接触的朋友可以在这方面有点欠缺,但没事一般做过一两个项目以后,对硬件配置选型也就会了,嘿嘿 。
但有个不成文的经验,硬件配置还是越高越好(别说是我说的) 。
我们为什么说需要根据具体的应用来选型呢,一方面是什么样的应用需要什么样的硬件配置,还有点很重要就是节约成本,钱得要在刀刃上不该花的钱我们不能乱花,也是为公司节约成本,实现资源利用最大化 。
上面我们说的是项目搭建初期,你运气比较好的项目一开始你就在这边 。
一般有经验的运维工程师在硬件选型上是不会有问题的,所以我们在性能优化时就不考虑硬件这块,从理论上讲我们服务器硬件配置一般不会出现在这种性能问题上 。
但是呢,由于我们业务做得越来越好,项目创建初期没有考虑到会有这么大的性能需要(访问量),现在有的硬件不能满足业务需求,所我们这时需要更换更好的CPU、更大的内存和更快的磁盘 。
至于如何找出硬件是性能瓶颈我们先在这里不细说,在后面的文章中我们将会细说 。最后我们来看一张硬件架构图,能帮你更好的理解硬件优化,如下图(Dell R 710 架构):

阿里资深软件测试工程师总结的这几点,让小白轻松搞懂性能调优

文章插图
 
2.操作系统
下面我们来说操作系统,其实绝大部分的优化都在操作系统和应用程序的优化,除了上线前的硬件选型和上线后的硬件扩展,下面我们就来看看操作系统优化包括哪些:
 
  • 操作系统安装优化
  • 系统初始化
  • 进程调优
  • 内存调优
  • IO 调优
  • 文件系统调优
  • 网络调化
 
下面我们来看一张图,可以更直观地帮助我们理解,如下图:
阿里资深软件测试工程师总结的这几点,让小白轻松搞懂性能调优

文章插图
 
3.应用程序
最后我们来说说应用程序优化,这里我们来说一下MySQL优化例子,让大家更直观的了解 。
 
  • MySQL 编译安装优化
  • MySQL 配置文件优化
  • 索引优化
  • MySQL 引擎优化
  • 查询缓存优化
  • SQL 语句优化
  • 优化表类型(MyISAM或InnoDB)
  • 锁机制优化
  • MySQL 服务器优化(换SSD)
 
通达上面的对硬件、操作系统、应用程序的具体说明相信,大家对性能优化有了更深层次的了解,下面我们来说一个重要的问题,什么人来进行性能优化?
什么人来进行性能调优?
(who)
一说起性能优化我们第一个想到的是运维工程师,他们来进行优化 。
其实我想说,这么说是片面的性能优化不仅仅是运维工程师的事 。
其实呢,性能优化是一个团队的事 。我为什么这么说呢?
下面我们就来说一下,大家想啊一公司需要做一项目,我们就拿最常见的电子商务中商城的项目来说吧,公司确认由于业务需要我们需要在网上做一个建材商城,那项目的具体流程是什么呢?可能不是很详细,但大体过程是样的:
 
  • 运营提出需求
  • 产品整理需求
  • 开发开发具体的业务应用
  • 运维搭建开发环境
  • QA 进行项目测试
  • 运维进行项目上线
  • 监控进行项目监控
 
开发一个具体的应用需要运营部、产品部、开发部、运维部、QA (测试)、监控等所以有部门的参加 。
同样的一个项目(业务)存在性能问题,不会只是运维部门需要性能调优而是所以部门一起解决这个性能问题,这是缺一不可的 。
可能出现在产品,也可能出现在程序上(*.php),也可能是业务需要本身就有问题,也可能是运维的环境搭建有问题 。但参加性能调优的更多的是开发、运维、测试和监控 。
怎么样进行性能调优?
(How)
下面进入正题了我们说一说怎么进行性能调优,具体步骤如下:
性能指标 –> 确认衡量标准 性能测试 –> 验证性能指标 性能分析 –> 找出性能瓶颈 性能调优 –> 解决性能问题 性能监控 –> 检验调优效果
1.性能指标
上面我们说了,我们优化的目的是为了获得更好的性能,那么性能指标是什么呢?我们怎么样来衡量,一般衡量一个项目(这里指的网站)的指标有三个:


推荐阅读