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

性能调优概述,这是⼀篇最通俗易懂性能调优的总结!
1. 作者概述
2. 什么是性能调优?(what)
3. 为什么需要性能调优?(why)
4. 什么时候需要性能调优?(when)
5. 什么地⽅需要性能调优?(where)
6. 什么⼈来进⾏性能调优?(who)
7. 怎么样进⾏性能调优?(How)
8. 总结
硬件配置:CUP Xeon E5620 x 2 8核⼼,内存 16G ,硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位)。
概述
在这篇博⽂中,我不想⽤⼀些抽象的概念去说性能调优的问题,只想⽤最通俗的语⾔尽量来准确的表达我的想法。
由于本⼈⼩平有限,有什么不对或者不清楚的地⽅欢迎⼤家交流指正。为了更能通俗易懂的理解我们即将要的性能调优的话题,我在这⾥简单的和⼤家说⼀下我写这篇⽂章的写作⽅法 5w+1h⽅法。
注,5w+1h就是对所做⼯作进⾏科学的分析,对某⼀⼯作在调查研究的基础上:
· 就其⼯作内容(What)
· 责任者(Who)
· ⼯作岗位(Where)
· ⼯作时间(When
· 怎样操作(How
· 以及为何这样做(Why)
即”5W”、”1H”进⾏书⾯描述,并按此描述进⾏操作,达到完成职务任务的⽬标。(来源“百度百科”)
哈哈听过马哥课程的⼀定不陌⽣!
⼆、什么是性能调优?(what)
在说什么是性能调优之前我们先来说⼀下,计算机的体系结构。
如上图,简单来说包括三块:硬件、操作系统、应⽤程序。其实,性能调优就是调节这些内容,包括硬件、操作系统、应⽤程序。其中,这三⼤⽅⾯中⼜包含了若⼲的内容。
硬件包括: CPU、内存、磁盘、⽹卡、其它……,
操作系统包括进程、虚拟内存、⽂件系统、⽹络、其它……,
应⽤程序我就不⽤说了⼤家都懂,常见的有Apache、MySQL、Nginx、Memcahed等。
那什么是性能调优呢?
性能调优就是对计算机硬件、操作系统和应⽤有相当深⼊的了解,调节三者之间的关系,实现整个系统(包括硬件、操作系统、应⽤)的性能最⼤化,并能不断的满⾜现有的业务需求。这就是我们说的性能调优,客官你懂了嘛?
三、为什么需要性能调优?(why)
下⾯我们来说⼀说为什么需要性能调优,其实说到底就两原因:⼀是为了获得更好的系统性能(就是你现有的系统运⾏的还不错,但优化⼀下可以运⾏的更好)。⼆是通过性能调优来满⾜不断增加的业务需求。为了更直观的帮助⼤家来理解为什么要性能调优?我们分别从三个⽅⾯来说:
· 硬件选型(根据服务器应⽤类型来选购服务器)
· 操作系统发⾏版本(选择发⾏版本)
· 应⽤程序(Nginx、MySQL等)
1.硬件选型
不管你是租服务器也好还是⾃⼰买服务器也好都要遇到⼀个问题,我们选择什么样硬件配置的服务器。
⼀般我们是根据应⽤类型来选择服务器,因为你不可能⼀种硬件配置来满⾜所有的应⽤需求,因为每个应⽤的具体需求不⼀样。下⾯我们来看⼀下在项⽬实施中有哪些应⽤类型:
·
负载均衡:性能要求相对较低,因为只负责转发数据,但要保证选⼀性能突出的⽹卡即可。(推荐配置:CPU E5620 x 1内存8G 硬盘500G(RAID5))
· web 服务器:⼀般只处理⼀些静态页⾯或者图⽚等,因此要求也不是很⾼,主流的服务器都可以。(推荐配置:CPU E5620 x 1内存
16G 硬盘 500G(RAID5))
· 应⽤服务器:⼀般应⽤程序服器,他承担⽹站功能的实现,在架构中占有⽐较重的位置,特别是⽹站架构中只有⼀台应⽤服务器,对CPU、内存、磁盘要求都⽐较⾼。(推荐配置:CPU E5620 x 2 内存 32G 硬盘 500G(RAID10))
· 缓存服务器:分为前端页⾯缓存与后⾯数据缓存,他们典型的应⽤分别是Varnish与Memcached,对内存的要求⽐较⼤,⼀般我们配置服务器时使⽤较⼤有内存。(推荐配置:CPU E5620 x 1 内存 32G 硬盘 500G(RAID10))
· 数据库服务器:数据服务器对CPU、内存、磁盘的要求都很⾼,⼀但某个硬件是短板都会带来性能问题。(推荐配置:CPU E5620 x 2 内存 64G 固态硬盘 500G(RAID10))
· 备份服务器:备份服务器⼀般就没有什么要求,但有点可以肯定是必须有⾜够⼤的硬盘空间。(推
荐配置:CPU E5620 x 1 内存 4G 硬盘2TB(RAID5))
· 监控服务器:⼀般也没什么需要,普通的PC服务器就可以。(推荐配置:CPU E5620 x 1 内存 4G 硬盘 500(RAID5))
· 其它服务器:⾄于其它服务器就看各位的具体需要具体分析了。
这下各位知道什么是硬件的性能调优了吧,根据你具体的应⽤,进⾏具体分析特别是像MySQL这样的服务器,对CPU、内存、磁盘要求都⽐较⾼。
所以,对硬件的性能调优我们必须做到选择合适的硬件配置。这是⽹站架架构或者项⽬实施⾸先要解决的问题!
2.操作系统
有本书叫《Linux Performance Tuning》(Linux 性能调优)这本书是⽼外写的,作者是 Fernando Apesteguia 。
为什么我们需要性能调优?他得出的结论是这样的:
“当⼀个发⾏版打包发送到客户⼿中的时候,它是为了完全兼容市场中⼤部分计算机⽽设计的。这是⼀个相当混杂的硬件集合(硬盘,显卡,⽹卡,等等)。
所以Red Hat,SUSE,Mandriva,Ubuntu和其他的⼀些发⾏版⼚商选择了⼀些保守的设置来确保安装成功。”
简单说,你的操作系统已经运⾏的不错了,但是你可以调节它获得更⾼的性能,⽐如你有个⾼性能的磁盘,但你的操作系统中⼀些选项参数默认没有启动,就不能实现这些⾼级功能来提⾼硬盘性能。
还有我想说就是对操作系统发⾏版选择的问题,RedHat或CentOS这些操作系统在项⽬实施或⽹站架构中⽤的⽐较多,主要针对企业应⽤⽽开发的操作系统。
⽽Ubuntu之类的操作系统对桌⾯⽀持的⽐较好,所以选择发⾏版本时得注意。(⼀般企业中⽤的⽐较多的是CentOS)再有就是我们⼀般不要选择最新的发⾏版,因为刚出来的发⾏版相对来说bug还⽐较多,不要先当“⼩⽩⿏”了,
⽐如:刚刚出来CentOS 7 等过⼀段时间稳定了再使⽤,⽬前我们可以选择 CentOS 6.4 或 6.5即可。
(但新版本也有很多好处,新版本中加⼊了很多新功能,去掉习已知bug,对于⼀些不重要的应⽤,可尝试使⽤新的操作系统)
3.应⽤程序
最后,我们得来说说应⽤程序了,我们先来简单看到⼀下Apache的MPM配置⽂件:
prefork 模型:
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
⼤家可以从上⾯的配置⽂件中可以看出,apache 开始启动时启⽤ 8个进程,最⼩ 5个进程,最⼤20个进程,每个进程限制请求数为256个,最多可以接受请求 4000个,超过这个限制数⾃动销毁。
worker 模型:
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
在看⼀下,worker模型的配置⽂件,默认启动2个进程,每个进程可以接受的请求为150个,每个进程中最⼩线程数25个,最⼤线程数为75个,默认线程数25个,每个线程可以接受的请求没有限制为0。
好了,⼤家看完上⾯的配置⽂件,可以看出默认的Apache配置⽂件,设置的⽐较保守,只适于⼀些中⼩⽹站,想要获得⾼性能的Apache服务器还必须进⾏性能调优,包括apache编译选项,配置⽂件优化等,具体的调优我们在这⾥先不细说。
通过我们上⾯的讲解,我们分别从硬件、操作系统、应⽤程序,这三个⽅⾯⼊⼿和⼤家谈谈为何需要性能调优,相信⼤家已经知道并了解,相信⼤家都迫不及待了吧。
嘿嘿,我们先不急还有很多问题没有说清楚,下⾯我们和⼤家来说说,什么时候需要性能调优?
四、什么时候需要性能调优?(when)
⼀般分为两个时间段:
· 上线前(基本优化)
· 上线后(持续优化)
为什么这样说呢,⼀般我们在项⽬实施到项⽬上线这段时间,不但要准备硬件服务器、安装操作系统、环境搭建,还有个很重要的问题就是进⾏性能优化,包括操作系统优化和应⽤环境优化等,我称上线前的优化为基本优化也称为经验优化。
根据你做过的项⽬和你⼯作中的经验对上线前的服务器或架构进⾏基本的性能优化来满⾜业务需求。
再有就是项⽬上线后的优化,在上线前我们已经经过基本的性能优化,解决⼤部分的性能问题,但毕竟上线前的所以测试都是模拟测试并进⾏相关的性能优化,与上线后的真实环境还是有相当⼤的区.
我们⾸先要做的就是对上线后的项⽬进⾏性能监控包括服务器性能监控和服务性能监控。
服务器性能监控包括:
CPU使⽤率、CPU负载、内存使⽤率、磁盘I/O、磁盘空间使⽤率、⽹络流量、系统进程等,服务性能监控包括apache、nginx、mysql。
以上架构中所有的服务都需要进⾏性能监控,⼀但发现有问题我们都得去进⾏性能优化,在这个过程中我称为持续优化也称为监控优化。下⾯我们来具体的说⼀下,具体什么地⽅需要性能调优?
五、什么地⽅需要性能调优?(where)
在上⾯我们说性能调优只说⼀些⼤的⽅⾯,包括硬件、操作系统、应⽤程序这三⼤块。
其实还有⼀块就是程序本⾝的优化,开发⼈员根据需求开发出来的程序本⾝就需要性能优化,但对于我们运维⼈员来说接触的⽐较少⽽已。下⾯我们就来看看这三⼤块:
· 硬件(CPU、内存、磁盘、⽹卡)
· 操作系统(进程、⽂件系统、内核 ……)
· 应⽤程序(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.性能指标
上⾯我们说了,我们优化的⽬的是为了获得更好的性能,那么性能指标是什么呢?我们怎么样来衡量,⼀般衡量⼀个项⽬(这⾥指的⽹站)的指标有三个:
· 吞吐量 –> 是单位时间内完成的⽤户或系统的请求数量。
· 并发数 –> 同时能接受多少⽤户的访问请求
· 响应时间 –> ⽤户发出请求到收到响应的时间间隔。
2.性能测试
我们做产品或者说项⽬(更直⽩的说是⽹站)⽬的是为了让⽤户使⽤,我们得先站在⽤户的⾓度分析⼀下,⽤户需要关注哪些性能。
对于⽤户来说,当点击⼀个按钮、链接或发出⼀个操作指令,到系统把请求处理好发给⽤户并⽤⽹页的形式展现出来为⽌,这个过程中所消耗的时间是⽤户对这个⽹站性能的直观印象。
也就是我们所说的响应时间,当响应时间较⼩时,⽤户体验相对来说就会好,当然⽤户体验的响应时间包括个⼈主观因素和客观响应时间。
在⽹站开发与搭建时,我们就需要考虑到如何更好地结合这两部分达到⽤户最佳的体验。⽤户关注的是⽤户操作的相应时间。
其次,我们站在运维的⾓度考虑需要关注的性能点。再次,我们得站在开发(设计)⼈员⾓度去考虑⽹站性能。最后,由QA测试与反馈我们⽹站性能。
经过上述的说明,我们来测试系统的性能,需要我们收集系统的吞吐量、并发数、响应时间这三个重要的指标。具体步骤是:
· 确认吞吐量、并发数、响应时间这三个值
· 到或开发相应的性能测试⼯具
· 进⾏性能测试
· 反馈结果并提交测试报告
结果,有两个⼀种是达到我们预期的性能⽬标,这样我们就不需要性能优化任务完成可以交给运维上线,只需要进⾏相关的性能监控,⽅便上线后进⾏性能优化。
另⼀种是没有达到我们预期的⽬标,我们要查性能瓶颈并进⾏性能优化。
3.性能分析
通过上⾯的性能测试,我们发现⽹站没有达到我们预期定义的性能⽬标,这时我们需要做的就是对现有的系统(服务器)进⾏监控,包括硬件与软件监控,为性能调优提供有效的性能监控数据。

本文发布于:2024-09-23 09:27:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/87631.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:性能   优化   调优
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议