阿里资深软件测试工程师总结的这几点,让小

北京中科医院曝光 http://pf.39.net/bdfyy/zjft/161225/5154125.html

什么是性能调优?(what)为什么需要性能调优?(why)什么时候需要性能调优?(when)什么地方需要性能调优?(where)什么人来进行性能调优?(who)怎么样进行性能调优?(How)硬件配置:CUPXeonEx28核心,内存16G,硬盘RAID10操作系统:CentOS6.4x86_64(64位)注:5w+1h就是对所做工作进行科学的分析,对某一工作在调查研究的基础上:就其工作内容(What)责任者(Who)工作岗位(Where)工作时间(When)怎样操作(How)以及为何这样做(Why)即对”5W”、”1H”进行书面描述,并按此描述进行操作,达到完成职务任务的目标。什么是性能调优?(what)在说什么是性能调优之前我们先来说一下,计算机的体系结构。如上图,简单来说包括三块:硬件、操作系统、应用程序。其实,性能调优就是调节这些内容,包括硬件、操作系统、应用程序。其中,这三大方面中又包含了若干的内容。硬件包括:CPU、内存、磁盘、网卡、其它……,操作系统包括进程、虚拟内存、文件系统、网络、其它……,应用程序我就不用说了大家都懂,常见的有Apache、MySQL、Nginx、Memcahed等。那什么是性能调优呢?性能调优就是对计算机硬件、操作系统和应用有相当深入的了解,调节三者之间的关系,实现整个系统(包括硬件、操作系统、应用)的性能最大化,并能不断的满足现有的业务需求。这就是我们说的性能调优,客官你懂了嘛?为什么需要性能调优?(why)下面我们来说一说为什么需要性能调优,其实说到底就两原因:一是为了获得更好的系统性能(就是你现有的系统运行的还不错,但优化一下可以运行的更好)。二是通过性能调优来满足不断增加的业务需求。为了更直观的帮助大家来理解为什么要性能调优?我们分别从三个方面来说:硬件选型(根据服务器应用类型来选购服务器)操作系统发行版本(选择发行版本)应用程序(Nginx、MySQL等)1.硬件选型不管你是租服务器也好还是自己买服务器也好都要遇到一个问题,我们选择什么样硬件配置的服务器。一般我们是根据应用类型来选择服务器,因为你不可能一种硬件配置来满足所有的应用需求,因为每个应用的具体需求不一样。下面我们来看一下在项目实施中有哪些应用类型:负载均衡:性能要求相对较低,因为只负责转发数据,但要保证选一性能突出的网卡即可。(推荐配置:CPUEx1内存8G硬盘G(RAID5))web服务器:一般只处理一些静态页面或者图片等,因此要求也不是很高,主流的服务器都可以。(推荐配置:CPUEx1内存16G硬盘G(RAID5))应用服务器:一般应用程序服器,他承担网站功能的实现,在架构中占有比较重的位置,特别是网站架构中只有一台应用服务器,对CPU、内存、磁盘要求都比较高。(推荐配置:CPUEx2内存32G硬盘G(RAID10))缓存服务器:分为前端页面缓存与后面数据缓存,他们典型的应用分别是Varnish与Memcached,对内存的要求比较大,一般我们配置服务器时使用较大有内存。(推荐配置:CPUEx1内存32G硬盘G(RAID10))数据库服务器:数据服务器对CPU、内存、磁盘的要求都很高,一旦某个硬件是短板都会带来性能问题。(推荐配置:CPUEx2内存64G固态硬盘G(RAID10))备份服务器:备份服务器一般就没有什么要求,但有点可以肯定是必须有足够大的硬盘空间。(推荐配置:CPUEx1内存4G硬盘2TB(RAID5))监控服务器:一般也没什么需要,普通的PC服务器就可以。(推荐配置:CPUEx1内存4G硬盘(RAID5))其它服务器:至于其它服务器就看各位的具体需要具体分析了。这下各位知道什么是硬件的性能调优了吧,根据你具体的应用,进行具体分析特别是像MySQL这样的服务器,对CPU、内存、磁盘要求都比较高。所以,对硬件的性能调优我们必须做到选择合适的硬件配置。这是网站架架构或者项目实施首先要解决的问题!2.操作系统有本书叫《LinuxPerformanceTuning》(Linux性能调优)这本书是老外写的,作者是FernandoApesteguia。为什么我们需要性能调优?他得出的结论是这样的:“当一个发行版打包发送到客户手中的时候,它是为了完全兼容市场中大部分计算机而设计的。这是一个相当混杂的硬件集合(硬盘,显卡,网卡,等等)。所以RedHat,SUSE,Mandriva,Ubuntu和其他的一些发行版厂商选择了一些保守的设置来确保安装成功。”简单说,你的操作系统已经运行的不错了,但是你可以调节它获得更高的性能,比如你有个高性能的磁盘,但你的操作系统中一些选项参数默认没有启动,就不能实现这些高级功能来提高硬盘性能。还有我想说就是对操作系统发行版选择的问题,RedHat或CentOS这些操作系统在项目实施或网站架构中用的比较多,主要针对企业应用而开发的操作系统。而Ubuntu之类的操作系统对桌面支持的比较好,所以选择发行版本时得注意。(一般企业中用的比较多的是CentOS)再有就是我们一般不要选择最新的发行版,因为刚出来的发行版相对来说bug还比较多,不要先当“小白鼠”了,比如:刚刚出来CentOS7等过一段时间稳定了再使用,目前我们可以选择CentOS6.4或6.5即可。(但新版本也有很多好处,新版本中加入了很多新功能,去掉习已知bug,对于一些不重要的应用,可尝试使用新的操作系统)3.应用程序最后,我们得来说说应用程序了,我们先来简单看到一下Apache的MPM配置文件:prefork模型:大家可以从上面的配置文件中可以看出,apache开始启动时启用8个进程,最小5个进程,最大20个进程,每个进程限制请求数为个,最多可以接受请求个,超过这个限制数自动销毁。worker模型:再看一下,worker模型的配置文件,默认启动2个进程,每个进程可以接受的请求为个,每个进程中最小线程数25个,最大线程数为75个,默认线程数25个,每个线程可以接受的请求没有限制为0。好了,大家看完上面的配置文件,可以看出默认的Apache配置文件,设置的比较保守,只适于一些中小网站,想要获得高性能的Apache服务器还必须进行性能调优,包括apache编译选项,配置文件优化等,具体的调优我们在这里先不细说。通过我们上面的讲解,我们分别从硬件、操作系统、应用程序,这三个方面入手和大家谈谈为何需要性能调优,相信大家已经知道并了解,相信大家都迫不及待了吧。嘿嘿,我们先不急还有很多问题没有说清楚,下面我们和大家来说说,什么时候需要性能调优?什么时候需要性能调优?(when)一般分为两个时间段:上线前(基本优化)上线后(持续优化)为什么这样说呢,一般我们在项目实施到项目上线这段时间,不但要准备硬件服务器、安装操作系统、环境搭建,还有个很重要的问题就是进行性能优化,包括操作系统优化和应用环境优化等,我称上线前的优化为基本优化也称为经验优化。根据你做过的项目和你工作中的经验对上线前的服务器或架构进行基本的性能优化来满足业务需求。再有就是项目上线后的优化,在上线前我们已经经过基本的性能优化,解决大部分的性能问题,但毕竟上线前的所以测试都是模拟测试并进行相关的性能优化,与上线后的真实环境还是有相当大的区.我们首先要做的就是对上线后的项目进行性能监控包括服务器性能监控和服务性能监控。服务器性能监控包括:CPU使用率、CPU负载、内存使用率、磁盘I/O、磁盘空间使用率、网络流量、系统进程等,服务性能监控包括apache、nginx、mysql。以上架构中所有的服务都需要进行性能监控,一但发现有问题我们都得去进行性能优化,在这个过程中我称为持续优化也称为监控优化。下面我们来具体的说一下,具体什么地方需要性能调优?什么地方需要性能调优?(where)在上面我们说性能调优只说一些大的方面,包括硬件、操作系统、应用程序这三大块。其实还有一块就是程序本身的优化,开发人员根据需求开发出来的程序本身就需要性能优化,但对于我们运维人员来说接触的比较少而已。下面我们就来看看这三大块:硬件(CPU、内存、磁盘、网卡)操作系统(进程、文件系统、内核……)应用程序(Nginx、MySQL……)1.硬件硬件优化一般也包括两块:上线前(硬件选型)上线后(硬件扩展)一般项目搭建时都需要根据具体的应用进行硬件配置选型,在这方面需要一定的运维经验刚接触的朋友可以在这方面有点欠缺,但没事一般做过一两个项目以后,对硬件配置选型也就会了,嘿嘿。但有个不成文的经验,硬件配置还是越高越好(别说是我说的)。我们为什么说需要根据具体的应用来选型呢,一方是什么样的应用需要什么样的硬件配置,还有点很重要就是节约成本,钱得要在刀刃上不该花的钱我们不能乱花,也是为公司节约成本,实现资源利用最大化。上面我们说的是项目搭建初期,你运气比较好项目一开始你就在这边。一般有经验的运维工程师在硬件选型是不会有问题的,所以我们在性能优化时就不考虑硬件这块,从理论上讲我们服务器硬件配置一般不会出现在这种性能问题上。但是呢,由于我们业务做的越来越好,项目创建初期没有考虑到会有这么大的性能需要(访问量),现在有的硬件不能满足业务需求,所我们这时需要更换更好的CPU、更大的内存和更快的磁盘。至于如何找出硬件是性能瓶颈我们先在这里不细说,在后面的文章中我们将会细说。最后我们来看一张硬件架构图,能帮你更好的理解硬件优化,如下图(DellR架构):2.操作系统下面我们来说操作系统,其实绝大部分的优化都在操作系统和应用程序的优化,除了上线前的硬件选型和上线后的硬件扩展,下面我们就来看看操作系统优化包括哪些:操作系统安装优化系统初始化进程调优内存调优IO调优文件系统调优网络调化下面我们来看一张图,可以更直观的帮且我们理解,如下图:3.应用程序最后我们来说说应用程序优化,这里我们来说一下MySQL优化例子,让大家更直观的了解。MySQL编译安装优化MySQL配置文件优化索引优化MySQL引擎优化查询缓存优化SQL语句优化优化表类型(MyISAM或InnoDB)锁机制优化MySQL服务器优化(换SSD)通达上面的对硬件、操作系统、应用程序的具体说明相信,大家对性能优化有了更深层次的了解,下面我们来说一个重要的问题,什么人来进行性能优化?什么人来进行性能调优?(who)一说起性能优化我们第一个想到的是运维工程师,他们来进行优化。其实我想说,这么说是片面的性能优化不仅仅是运维工程师的事。其实呢,性能优化是一个团队的事。我为什么这么说呢?下面我们就来说一下,大家想啊一公司需要做一项目,我们就拿最常见的电子商务中商城的项目来说吧,公司确认由于业务需要我们需要在网上做一个建材商城,那项目的具体流程是什么呢?可能不是很详细,但大体过程是样的:运营提出需求产品整理需求开发开发具体的业务应用运维搭建开发环境QA进行项目测试运维进行项目上线监控进行项目监控开发一个具体的应用需要运营部、产品部、开发部、运维部、QA(测试)、监控等所以有部门的参加。同样的一个项目(业务)存在性能问题,不会只是运维部门需要性能调优而是所以部门一起解决这个性能问题,这是缺一不可的。可能出现在产品,也可能出现在程序上(*.php),也可能是业务需要本身就有问题,也可能是运维的环境搭建有问题。但参加性能调优的更多的是开发、运维、测试和监控。怎么样进行性能调优?(How)下面进入正题了我们说一说怎么进行性能调优,具体步骤如下:性能指标–确认衡量标准性能测试–验证性能指标性能分析–找出性能瓶颈性能调优–解决性能问题性能监控–检验调优效果1.性能指标上面我们说了,我们优化的目的是为了获得更好的性能,那么性能指标是什么呢?我们怎么样来衡量,一般衡量一个项目(这里指的网站)的指标有三个:吞吐量–是单位时间内完成的用户或系统的请求数量。并发数–同时能接受多少用户的访问请求响应时间–用户发出请求到收到响应的时间间隔。2.性能测试我们做产品或者说项目(更直白的说是网站)目的是为了让用户使用,我们得先站在用户的角度分析一下,用户需要


转载请注明:http://www.aierlanlan.com/cyrz/1683.html

  • 上一篇文章:
  •   
  • 下一篇文章: