当前位置: 首页 > 科技观察

性能调优概述,这是一篇最通俗易懂的性能调优总结

时间:2023-03-20 15:23:51 科技观察

性能调优概述,这是最通俗易懂的性能调优总结?(when)哪里需要性能调优?(where)谁来执行性能调优?(who)如何进行性能调优?(How)硬件配置总结:银联至强E5620x28核,内存16G,硬盘RAID10,操作系统:CentOS6.4x86_64(64位)。概述在这篇博文中,我不想用一些抽象的概念来谈论性能调优问题,我只是想用最流行的语言尽可能准确地表达我的想法。本人水平有限,如有不妥之处或不明之处,欢迎大家交流指正。为了更容易理解我们即将要理解的性能调优这个话题,我简单说一下我写这篇文章的写法,5w+1h法。注意,5w+1h是在对某项工作进行调查研究的基础上,对完成的工作进行的科学分析:工作内容(What)、负责人(Who)、工作岗位(Where)),工作时间(When,howtooperate(How和why(为什么)用“5W”和“1H”来书面描述,并根据这个描述来操作,以达到完成工作任务的目的。(来源“百度”百科全书》)哈哈!肯定听过马哥的课程不陌生!2.什么是性能调优?(what)在说性能调优之前,先说说计算机的架构,如上图,简单来说就是包括硬件、操作系统、应用程序三部分,性能调优其实就是对这些内容进行调整,包括硬件、操作系统、应用程序,其中这三个方面又包括几个内容,硬件包括:CPU、内存,磁盘,网卡,其他...,操作系统stem包括进程、虚拟内存、文件系统、网络和其他。不用说,每个人都了解应用程序。常见的有Apache、MySQL、Nginx、Memcahed等,那么什么是性能调优呢?性能调优卓越是对计算机硬件、操作系统和应用程序有相当深入的了解,调整三者之间的关系,实现整个系统(包括硬件、操作系统、应用程序)的性能优化,并能持续满足现有要求。业务需求。这就是我们所说的性能调优。客官,你明白吗?3、为什么要做性能调优?(why)下面说说为什么需要性能调优。更好的系统性能(即,您现有的系统运行良好,但您可以对其进行优化以使其运行得更好)。二是通过性能调优满足不断增长的业务需求。为了帮助大家更直观的理解为什么需要进行性能调优?下面从三个方面来谈:硬件选择(根据服务器应用类型选择服务器)操作系统发布版本(选择发布版本)应用程序(Nginx、MySQL等)1、硬件选择租用服务器还是自己买服务器,你会遇到一个问题,我们选择什么样的硬件配置服务器。一般我们是根据应用类型来选择服务器,因为一种硬件配置不可能满足所有的应用需求,因为每个应用的具体需求都不一样。我们来看看项目实现中的应用类型:负载均衡:性能要求比较低,因为它只负责转发数据,但是要保证选择性能突出的网卡。(推荐配置:CPUE5620x1内存8G硬盘500G(RAID5))Web服务器:一般只处理一些静态页面或图片等,所以要求不是很高,主流服务器即可。(推荐配置:CPUE5620x1内存16G硬盘500G(RAID5))应用服务器:一般的应用服务器,负责网站功能的实现,在架构中占有比较重要的位置,尤其是只有一个应用在网站架构中服务器对CPU、内存、磁盘的要求比较高。(推荐配置:CPUE5620x2内存32G硬盘500G(RAID10))缓存服务器:分为前端页面缓存和后端数据缓存。它们的典型应用分别是Varnish和Memcached。对内存的要求比较大。一般我们配置服务器时使用较大的内存。(推荐配置:CPUE5620x1内存32G硬盘500G(RAID10))数据库服务器:数据服务器对CPU、内存、磁盘要求较高。任何硬件故障都会导致性能问题。(推荐配置:CPUE5620x2内存64GSSD500G(RAID10))备份服务器:一般对备份服务器没有要求,但肯定要有足够的硬盘空间。(推荐配置:CPUE5620x1内存4G硬盘2TB(RAID5))监控服务器:一般不需要,普通PC服务器即可。(推荐配置:CPUE5620x1内存4G硬盘500(RAID5))其他服务器:至于其他服务器,就看你的具体需求了。现在大家都知道什么是硬件性能调优了。根据你的具体应用具体分析,尤其是像MySQL这样的服务器,对CPU、内存、磁盘的要求都比较高。因此,我们必须选择合适的硬件配置来进行硬件性能调优。这是网站框架结构或项目实施首先要解决的问题!2.操作系统上有一本书,叫做《Linux Performance Tuning》(LinuxPerformanceTuning)。这本书是老外写的,作者是FernandoApesteguia。为什么我们需要性能调优?他的结论是:“当一个发行版被打包并运送给客户时,它被设计成与市场上的大多数计算机完全兼容。它是一个相当混合的硬件集合(硬盘、显卡、网卡、etc.).所以RedHat,SUSE,Mandriva,Ubuntu等一些发行厂商选择了一些保守的设置来确保安装成功。”简而言之,您的操作系统已经运行得不错,但您可以对其进行调整以获得更高的性能。例如,如果你有一个高性能的磁盘,但你的操作系统中的一些选项和参数默认没有启用,你就无法实现这些高级功能来提高硬盘的性能。我还要说的是操作系统发布版本的选择。RedHat或CentOS等操作系统常用于项目实施或网站架构,主要为企业应用开发。Ubuntu等操作系统对桌面有更好的支持,所以在选择发布版本时要小心。(CentOS在企业中用的比较多。)还有一点就是我们一般不会选择最新的release版本,因为刚出来的release版本bug相对比较多,所以先不要当“小白鼠”,比如:CentOS7刚刚发布,等一段时间稳定后就可以使用了。目前我们可以选择CentOS6.4或者6.5。(但是新版本也有很多好处,新版本增加了很多新特性,去除了已知的bug,对于一些不重要的应用,可以尝试使用新的操作系统)3、应用***、说到应用,我们简单看一下Apache的MPM配置文件:preforkmodel:StartServers8MinSpareServers5MaxSpareServers20ServerLimit256MaxClients256MaxRequestsPerChild4000从上面的配置文件可以看出,Apache启动了8个进程,最少是5个进程,最多20个进程。每个进程有256个请求的限制,最多可以接受4000个请求。如果超过这个限制,就会自动销毁。Worker模型:StartServers2MaxClients150MinSpareThreads25MaxSpareThreads75ThreadsPerChild25MaxRequestsPerChild0看一下worker模型的配置文件。默认启动2个进程,每个进程可以接受150个请求,每个进程最小线程数为25。***线程数为75,默认线程数为25,每个进程的请求threadcanaccept不限于0。好了,看了上面的配置文件,可以看到默认的Apache配置文件设置比较保守,只适合一些中小型网站。如果想获得高性能的Apache服务器,就必须进行性能调优,包括apache的编译。选项、配置文件优化等,具体调优这里就不细说了。通过我们上面的讲解,我们将从硬件、操作系统、应用三个方面来谈谈为什么要进行性能调优。相信大家都已经知道并且明白了。相信大家都已经迫不及待了。嘿,我们不着急,还有很多问题没有弄清楚。接下来说一下什么时候需要性能调优?4、什么时候需要性能调优?(when)一般分为两个时间段:OnlineBefore(基础优化)和afterlaunch(持续优化),为什么这么说呢?一般来说,在项目实施到项目上线的这段时间里,我们不仅需要准备硬件服务器、安装操作系统、搭建环境,还有一个很重要的问题。性能优化,包括操作系统优化和应用环境优化等,我把上线前的优化称为基础优化,也叫体验优化。根据做过的项目和工作经验,在上线前对服务器或架构进行基础的性能优化,满足业务需求。然后是项目上线后的优化。在上线之前,我们已经进行了基础的性能优化,解决了大部分的性能问题,但毕竟上线前的所有测试都是模拟测试和相关的性能优化。环境还是有相当大的面积的。我们要做的第一件事是在项目上线后对项目的性能进行监控,包括服务器性能监控和服务性能监控。服务器性能监控包括:CPU使用率、CPU负载、内存使用率、磁盘I/O、磁盘空间使用率、网络流量、系统进程等。服务性能监控包括apache、nginx、mysql。上述架构中的所有服务都需要进行性能监控。一旦发现问题,我们必须优化性能。在这个过程中,我称之为持续优化或者监控优化。接下来详细说一下,哪些地方需要进行性能调优?5.哪些地方需要进行性能调优?(where)上面我们只谈了性能调优的一些主要方面,包括硬件、操作系统、应用程序。这三块。其实还有一部分是程序本身的优化。开发者根据需求开发的程序本身就需要性能优化,但是对于我们运维人员来说,接触的比较少。我们来看看这三大块:硬件(CPU、内存、磁盘、网卡)操作系统(进程、文件系统、内核...)应用程序(Nginx、MySQL...)1、硬件硬件优化一般包括两块:上线前(硬件选型)和上线后(硬件扩容)。在构建一般工程时,需要根据具体应用选择硬件配置。这方面需要一定的运维经验。刚接触这方面的朋友可以稍微了解一下。不足,但没关系。做完一两个项目,硬件配置的选择就好了,呵呵。但是有个不成文的经验,硬件配置越高越好(别说我说了)。为什么说要根据具体应用选型呢?什么样的应用需要什么样的硬件配置?另一个重要的一点是节省成本。它还为公司节省了成本并最大限度地提高了资源利用率。我们上面说的是项目建设的初期阶段。你很幸运,你从项目一开始就在这里。一般有经验的运维工程师在硬件选型上不会有问题,所以我们在性能优化的时候不考虑硬件。理论上我们的服务器硬件配置一般不会出现这种性能问题。但是由于我们的业务越来越好,我们在项目创建之初并没有考虑这么大的性能需求(访问量)。现在有些硬件不能满足业务需求,这时候就需要更换更好的CPU。、更多内存和更快的磁盘。至于如何发现硬件是性能瓶颈,这里就不细说了,我们会在后面的文章中详细说明。***先看一张硬件架构图,可以帮助大家更好的理解硬件优化,如下图(DellR710架构):2.操作系统先说说操作系统。其实大部分的优化都在操作系统和应用程序的优化上,除了上线前的硬件选择和上线后的硬件扩容,我们来看看操作系统的优化包括哪些:操作系统安装优化系统初始化过程调优内存调优IO调优文件系统调优和网络调优先看一张图,可以帮助我们更直观的理解,如下图所示:3.应用***下面说说应用优化。下面我们就以一个MySQL优化的例子来说说。让大家更直观的了解。MySQL编译安装优化MySQL配置文件优化索引优化MySQL引擎优化查询缓存优化SQL语句优化优化表类型(MyISAM或InnoDB)锁机制优化MySQL服务器优化(针对SSD)了解以上具体硬件、操作系统、应用程序讲解一下,相信大家对性能优化都有更深的理解。接下来,我们来谈谈一个重要的问题,谁来进行性能优化?6.谁来进行性能优化?(who)一提到性能优化,我们*首先想到的就是运维工程师,他们来优化。其实我想说,片面的性能优化不仅仅是运维工程师的事情。其实性能优化是团队的事情。我为什么这么说?下面我们就来说说吧。大家觉得一个公司要做一个项目。我们以最常见的电子商务商城项目为例。公司确认因业务需要,需要我们在线上做一个项目。建材商城,项目的具体流程是怎样的?可能不是很详细,但大体流程是一样的:运营提出需求,产品梳理需求开发开发,具体业务应用运维,开发环境QA,项目测试运维,项目上线监控一个具体应用的项目监控和开发,需要运营部门、产品部门、开发部门、运维部门、QA(测试)、监控等部门的参与,同一个项目(业务)存在性能问题。不仅仅是运维部门需要性能调优,而是所有部门共同努力解决这个性能问题。这是必不可少的。可能出现在产品中,也可能出现在程序(*.php)中,也可能是业务本身的问题,也可能是运维环境搭建的问题。但更多参与性能调优的是开发、运维、测试和监控。7、如何进行性能调优?(How)下面说一下如何进行性能调优。性能瓶颈性能调优–>解决性能问题性能监控–>检查调优效果1.性能指标上面说了我们优化的目的是为了获得更好的性能,那么性能指标有哪些呢?我们该怎么做呢?衡量,一般有3个指标衡量一个项目(这里指的是网站):吞吐量->是单位时间内完成的用户或系统请求数。Concurrency–>可以同时接受多少个用户访问请求。Responsetime–>用户发送请求到收到响应的时间间隔。2.性能测试我们的产品或项目(更直接地说,网站)的目的是让用户使用它们。首先要从用户的角度分析,用户需要关注哪些性能。对于用户来说,当他们点击一个按钮、链接或者发出一个操作命令,直到系统处理完请求发送给用户并以网页的形式展示出来,这个过程所消耗的时间就是用户的直观印象网站的性能。这就是我们所说的响应时间。当响应时间小的时候,用户体验会比较好。当然,用户体验的响应时间包括个人主观因素和客观响应时间。在开发建设网站时,我们需要考虑如何将这两部分更好地结合起来,以达到最佳的用户体验。用户关心的是用户操作对应的时间。其次,我们从运维的角度考虑需要注意的性能点。再次,我们要从开发者(设计者)的角度来考虑网站的性能。***,QA测试和反馈我们的网站性能。经过上面的描述,我们来测试一下系统的性能。我们需要收集系统的三个重要指标:吞吐量、并发量和响应时间。具体步骤是:确认吞吐量、并发量、响应时间三个值寻找或开发相应的性能测试工具进行性能测试反馈结果并提交测试报告结果,有两种,一种是达到我们预期的性能目标,所以我们不需要完成性能优化任务,交给运维上线。我们只需要进行相关的性能监控,方便上线后的性能优化。另一个是我们没有达到预期的目标。我们需要找到性能瓶颈,进行性能优化。3、性能分析通过以上性能测试,我们发现该网站没有达到我们预期定义的性能目标。这时候,我们要做的就是对现有的系统(服务器)进行监控,包括硬件监控和软件监控,为性能调优提供有效的性能监控数据。下面重点说说使用什么工具来查找性能瓶颈:硬件:使用vmstat、sar、iostat查看是否是CPU瓶颈使用free、vmstat查看是否是内存瓶颈使用iostat查看是否是磁盘I/O瓶颈使用netstat检测是否是网络带宽瓶颈操作系统:进程文件系统SWAP分区内核参数调整应用程序(MySQL等):mysqlreport性能分析报告mysqlsla慢查询日志分析四、性能调优确定调优目标具体调优步骤检测调优结果确定调优目标。我们的性能优化目标是将网站性能提升10%或20%。老板不能说你今天把网站性能优化一下,就可以让网站性能翻倍。首先,你要问他我们需要达到什么样的目标。然后,我们要了解包括代码在内的整个环境(架构)(当然,你需要了解业务逻辑,一个大概的了解,肯定是无害的),有更多的时间和开发沟通,问问如何代码中的许多漏洞需要填补。很重要。经常他们优化代码中的SQL查询,这比你优化系统多少天更有效,哈哈。具体调优步骤如果不了解系统参数,千万不要随意改动系统参数,否则会后悔的。每次只调试一个系统资源,比如CPU,或者内存,磁盘。每次更改尽可能少的参数设置,建议一次修改一个设置。在分析系统资源时,使用多种工具往往会产生意想不到的结果。Notasgoodtoomuchisbetterthantoomuch(少做总比做多好,如果性能达到要求,不要随意走动,做好你的监控)。检测和调优结果每次性能调优后,都必须检查性能过程。比如web服务器的ab工具就是一个很好的测试工具,每次调优后可以看到具体的变化。5、性能监控性能监控非常重要,具体包括服务器性能监控和具体服务的性能监控。下面说说具体的性能监控指标:服务器性能监控CPU使用率CPU负载内存使用率磁盘I/O网络流量磁盘空间系统进程服务性能监控(MySQL)MySQL查询吞吐量,包括ChangeDB,Select,Insert,Update,DeleteMySQL持久连接利用率MySQL查询缓存空间使用率MySQL查询缓存***率MySQL缓存查询数MySQL索引缓存***率MySQL索引读取统计MySQL连接吞吐量MySQL连接缓存**率MySQL并发连接数,包括允许的数量连接数、实际连接数、当前连接数、活跃连接数、缓存连接数、MySQL流量统计、MySQL表统计和锁定。“在博文中,我只是给大家讲解一下具体的优化思路,帮助大家理解性能优化,让大家更容易理解,让大家知道,性能优化并没有传说中的那么难。做起来太难了,只要我们掌握好方法,什么问题都能解决。好了,说的够多了。希望大家有所收获^_^...