「技术干货」一篇最通俗易懂的性能调优总结,这篇就够了
温馨提示:这篇文章已超过600天没有更新,请注意相关的内容是否还可用!
首先,什么是性能调优?
在谈性能调优之前,先说说计算机的架构。
如上图所示,简单来说,包括硬件、操作系统、应用程序三部分。 性能调优其实就是调整这些内容,包括硬件、操作系统、应用程序。 其中,这三个方面包括了多项内容。
硬件包括:CPU、内存、磁盘、网卡等...,操作系统包括进程、虚拟内存、文件系统、网络等...,应用我就不多说了,大家懂的,常见的有 Apache、MySQL、Nginx、Memcahed 等。
嵌入式进阶教程分类整理,阅读起来非常方便。 由于内容较多服务器 64g内存,这里先截取一部分。
需要的朋友可以私信领取[kernel]
那么什么是性能调优呢?
性能调优是对计算机硬件、操作系统和应用程序有相当深入的了解,调整三者之间的关系,最大限度地发挥整个系统(包括硬件、操作系统、应用程序)的性能,不断满足现有的业务需求. 这就是我们所说的性能调优,客官,你明白吗?
第二,为什么需要性能调优?
下面说说为什么需要性能调优。 其实归根结底有两个原因:一个是为了获得更好的系统性能(就是你现有的系统运行的很好,但是如果你优化它可以运行得更好)。 二是通过性能调优满足不断增长的业务需求。 为了帮助大家更直观的理解为什么需要进行性能调优? 我们从三个方面来谈谈:
1、硬件选择
无论是租用服务器还是自己购买服务器,都会遇到一个问题,我们选择什么样的硬件配置服务器。
一般我们是根据应用类型来选择服务器,因为一种硬件配置不可能满足所有的应用需求,因为每个应用的具体需求都不一样。 我们来看看项目实施中的应用类型:
现在大家都知道什么是硬件性能调优了。 根据你的具体应用具体分析,尤其是像MySQL这样的服务器,对CPU、内存、磁盘的要求都比较高。
因此,我们必须选择合适的硬件配置来进行硬件性能调优。 这是网站架构或项目实施首先要解决的问题!
2. 操作系统
有一本书叫《Linux性能调优》(Linux Performance Tuning)。 这本书是老外写的,作者是Fernando Apesteguia。
为什么我们需要性能调优? 他的结论是这样的:
“当一个发行版被打包并运送给客户时,它被设计成与市场上的大多数计算机完全兼容。它是一个相当混合的硬件集合(硬盘驱动器、视频卡、网卡等)。
所以Red Hat、SUSE、Mandriva、Ubuntu等一些发行厂商选择了一些保守的设置来保证安装成功。 “
简单地说,您的操作系统已经运行良好,但您可以对其进行调整以获得更高的性能。 例如,如果您有一个高性能磁盘,但您的操作系统中的某些选项和参数默认情况下未启用,则您无法实现这些高级功能来提高硬盘性能。
我还要说的是操作系统发布版本的选择。 RedHat或CentOS等操作系统常用于项目实施或网站架构,主要为企业应用开发。
Ubuntu等操作系统对桌面有更好的支持,所以在选择发布版本时要小心。 (CentOS在企业中用的比较多)还有一点就是我们一般不会选择最新的release版本,因为刚出来的release版本bug相对较多,所以先不要当“小白鼠”。
比如:CentOS 7刚刚发布,等一段时间稳定后就可以使用了。 目前我们可以选择CentOS 6.4或者6.5。
(不过新版本也有很多好处,新版本增加了很多新特性,也去除了一些已知的bug。对于一些不重要的应用,可以尝试使用新的操作系统)
3.申请
最后,我们不得不说说应用。 我们简单看一下Apache的MPM配置文件:
预叉模型:
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
从上面的配置文件可以看出,Apache启动时启用了8个进程,最少5个进程,最多20个进程。 每个进程限制请求数为256个,最多可以接受4000个请求。 限号自动销毁。
工人模型:
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
再看,worker模型的配置文件默认启动2个进程,每个进程可以接受150个请求,每个进程最小线程数25,最大线程数75,默认线程数25 . 每个线程可以接受的请求没有限制为0。
好了,看了上面的配置文件,可以看出默认的Apache配置文件设置比较保守,只适用于一些中小型网站。 如果想获得高性能的Apache服务器,就必须进行性能调优,包括apache的编译。 选项、配置文件优化等,具体调优这里就不细说了。
通过我们上面的讲解,我们将从硬件、操作系统、应用三个方面来谈谈为什么要进行性能调优。 相信大家都已经知道并且明白了。 相信大家都已经迫不及待了。
哎,先别着急,还有很多问题没有弄清楚。 跟大家说说,什么时候需要性能调优?
第三,什么时候需要性能调优?
一般分为两个时期:
为什么这么说? 一般来说,从项目实施到项目上线期间,我们不仅需要准备硬件服务器、安装操作系统、搭建环境,还有一个非常重要的性能优化问题,包括操作系统优化和应用环境优化。 等等,我把上线前的优化称为基础优化,也叫经验优化。
根据做过的项目和工作经验,在上线前对服务器或架构进行基础的性能优化,满足业务需求。
然后是项目上线后的优化。 在上线之前,我们已经进行了基础的性能优化,解决了大部分的性能问题,但毕竟上线前的所有测试都是模拟测试和相关的性能优化。 环境还是有相当大的面积的。
我们要做的第一件事就是在上线后监控项目的性能,包括服务器性能监控和服务器性能监控。
服务器性能监控包括:
CPU使用率、CPU负载、内存使用率、磁盘I/O、磁盘空间使用率、网络流量、系统进程等服务性能监控包括apache、nginx、mysql。
上述架构中的所有服务都需要进行性能监控。 一旦发现问题,我们就必须优化性能。 在这个过程中,我称之为持续优化或者监控优化。 下面具体说一下,性能调优需要做哪些地方?
四、哪些地方需要性能调优?
上面我们只谈到了性能调优的一些主要方面,包括硬件、操作系统和应用程序。
其实还有一部分是程序本身的优化。 开发者根据需求开发的程序本身就需要性能优化,但是对于我们运维人员来说,接触的比较少。 让我们来看看这三个块:
1、硬件
硬件优化一般包括两块:
一般在构建工程时,需要根据具体应用选择硬件配置。 这方面需要一定的运维经验。 刚接触这方面的朋友可能在这方面有点欠缺,不过没关系。 做完一两个项目,硬件配置选择就好了,呵呵。
但是有个不成文的经验,硬件配置越高越好(别说我说了)。
为什么说要根据具体应用选型呢? 一方面,什么样的应用需要什么样的硬件配置,节约成本也很重要。 不该花的钱一定要花在刀片上。 ,也为公司节约成本,最大限度地利用资源。
我们上面说的是项目建设的初期阶段。 如果你幸运的话,你会从项目一开始就在这里。
一般有经验的运维工程师在硬件选型上不会有问题,所以我们在性能优化的时候不考虑硬件。 理论上我们的服务器硬件配置一般不会出现这种性能问题。 .
但是由于我们的业务越来越好,我们在项目创建之初并没有考虑这么大的性能需求(访问量)。 现在有些硬件不能满足业务需求,这时候就需要更换更好的CPU。 、更多内存和更快的磁盘。
至于如何发现硬件是性能瓶颈,这里就不细说了,我们会在后面的文章中详细说明。 最后再来看一张硬件架构图,可以帮助大家更好的理解硬件优化,如下图(Dell R 710架构):
3.申请
最后说说应用优化。 下面我们就讲一个MySQL优化的例子,让大家更直观的理解。
相信大家从通达对硬件、操作系统、应用的详细描述中,对性能优化有了更深的理解。 接下来,我们来谈谈一个重要的问题。 谁来执行性能优化?
第五,谁来进行性能调优?
说到性能优化,我们首先想到的就是运维工程师,他们是来优化的。
其实我想说,片面的性能优化不仅仅是运维工程师的事情。
其实性能优化是团队的事情。 我为什么这么说?
下面我们就来说说吧。 你觉得哪个公司需要做一个项目? 我们以最常见的电子商务商城项目为例。 公司确认,因业务需要,需要在网上建设建材商城。 该项目的具体流程是什么? 可能不是很详细,但大致流程如下:
一个具体应用的开发,需要运营部、产品部、开发部、运维部、QA(测试)、监控等各个部门的参与。
同一个项目(业务)存在性能问题。 不仅仅是运维部门需要性能调优,而是所有部门共同努力解决这个性能问题。 这是必不可少的。
可能出现在产品中服务器 64g内存,也可能出现在程序(*.php)中,也可能是业务本身的问题,也可能是运维环境搭建的问题。 但更多参与性能调优的是开发、运维、测试和监控。
六、如何进行性能调优?
让我们谈谈如何进行性能调优。 具体步骤如下:
一、性能指标
上面说了,我们优化的目的是为了获得更好的性能,那么性能指标有哪些呢? 我们如何衡量它? 衡量一个项目一般有3个指标(这里指的是网站):
2、性能测试
我们的产品或项目(更直白地说,网站)的目的是让用户使用它们。 我们首先要从用户的角度来分析,用户需要关注哪些特性。
对于用户来说,当他们点击一个按钮、链接或者发出一个操作命令,直到系统处理完请求发送给用户并以网页的形式展示出来,这个过程所消耗的时间就是用户的直观印象网站的性能。
这就是我们所说的响应时间。 当响应时间小的时候,用户体验会比较好。 当然,用户体验的响应时间包括个人主观因素和客观响应时间。
在开发建设网站时,我们需要考虑如何将这两部分更好地结合起来,以达到最佳的用户体验。 用户关心的是用户操作对应的时间。