linux性能优化和分析课件_第1页
linux性能优化和分析课件_第2页
linux性能优化和分析课件_第3页
linux性能优化和分析课件_第4页
linux性能优化和分析课件_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

系统性能分析和优化童剑2006/03/21msn:she11c0de@系统性能分析和优化童剑2006/03/211前言很高兴能有这样的机会,把我自己多年工作中对服务器硬件、软件方面的性能分析的经验和体会,以及性能优化的经验和各位朋友做一次分享。

这份ppt的内容组织大致是这样的,通过对系统中和性能相关的各个环节的介绍,使大家知道出现性能问题时可以从那些方面入手去查,而分析典型应用对系统资源使用的特点,让大家对应用和系统资源的依赖有了更直观的认识,然后我会介绍常见的分析及监控系统资源时使用的工具,这个环节应该是最主要的,最后我会举一个实际发生过的系统性能瓶颈分析和优化的案例,作为一个实践和总结。本文涉及的内容基于Gnu/Linux系统平台,但关于性能优化分析和优化的思路也能适用于其他系统平台。前言2我们将会讨论下列7个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例我们将会讨论下列7个话题性能分析的目的3开始第1个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第1个话题性能分析的目的4性能分析的目的找出系统性能瓶颈硬件瓶颈软件瓶颈提供性能优化方案升级硬件改进系统结构达到合理的硬件和软件配置使系统资源使用达到平衡性能分析的目的找出系统性能瓶颈5性能分析的目的但遗憾的是

解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一定的平衡。系统运行良好的时候恰恰也是各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加(用于进程切换、缺页处理的CPU开销)性能分析的目的但遗憾的是6开始第2个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第2个话题性能分析的目的7性能分析相关的人系统管理员大型应用的系统结构设计人员软件开发人员性能分析相关的人系统管理员8性能分析相关的人系统管理员掌握系统运行状况(负载)掌握系统资源使用情况(硬件)掌握应用程序对资源的使用情况(应用程序执行效率,反馈给应用开发人员)有针对性的开展服务器性能优化(硬件、软件、软件配置)性能分析相关的人系统管理员9性能分析相关的人系统架构设计人员了解程序执行效率了解系统架构中的性能瓶颈,优化系统结构设计更好的应用系统架构性能分析相关的人系统架构设计人员10性能分析相关的人软件开发人员了解程序执行效率改进程序逻辑、改进性能性能分析相关的人软件开发人员11开始第3个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第3个话题性能分析的目的12性能相关的各个环节硬件资源操作系统服务器软件开发平台/中间件软件/框架软件应用程序性能相关的各个环节硬件资源13性能相关的-硬件资源CPU内存存储系统带宽性能相关的-硬件资源CPU14性能相关的-硬件资源CPU是否使用SMP单颗CPU的性能对依赖CPU的某些应用的影响很严重,比如数据库的查询处理性能相关的-硬件资源CPU15性能相关的-硬件资源内存物理内存

物理内存不够时会使用交换内存交换内存使用交换内存会带来磁盘IO和CPU的开销增加

性能相关的-硬件资源内存16性能相关的-硬件资源存储系统SCSI磁盘ATA/SATA磁盘RAID磁盘阵列(RAID0,RAID1,RAID5,RAID0+1)一些经验小文件读写的性能瓶颈是磁盘的寻址(随机读写性能更差),评估的标准是tps大文件读写的性能瓶颈是带宽,评估的标准是持续的读写速度Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好性能相关的-硬件资源存储系统17性能相关的-硬件资源带宽网络带宽SCSI总线带宽大文件访问时SCSI的带宽瓶颈系统总线带宽性能相关的-硬件资源带宽18性能相关的-操作系统SMP性能VM性能IO性能(存储设备、网络设备、异步IO)文件系统性能(大文件优化、小文件优化、写优化、读优化、网络文件系统)多线程性能性能相关的-操作系统SMP性能19开始第4个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第4个话题性能分析的目的20系统使用和优化的原则对资源的使用状况作长期的监控和数据收集Snmp+MRTGSar程序的优化和系统结构的优化比硬件的性能优化更有效避免不受限制的使用系统资源设置各项服务对资源的使用限额,如Apache,MySQL,PHP等系统使用和优化的原则对资源的使用状况作长期的监控和数据收集21系统使用和优化的原则始终保留一定量的空闲资源多少合适?根据应用的特点,比如是否有突发性使用增长?日常情况下,保留至少60%的系统资源,以应付突发使用增长。日常情况下,资源使用率达到80%时,你必须有所行动了,尤其是web应用。系统硬件达到合理的配置(以适合应用的特点为依据,资源消耗均衡为目标)系统性能的水桶理论系统使用和优化的原则始终保留一定量的空闲资源22系统使用和优化的原则应用软件对资源的使用要均衡(理想目标)怎么样就算是均衡了?我也在摸索中……理想状况为:CPU消耗到50%的时候,磁盘的带宽也到50%,磁盘的tps也到50%,内存使用也到50%(除去可以提供给cache的内存)系统使用和优化的原则应用软件对资源的使用要均衡(理想目标)23开始第5个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第5个话题性能分析的目的24典型应用对系统资源使用的特点声明这部分内容主要是本人在网站工作多年的一些实践经验积累,所以这些经验并不完全适用于其他的应用环境。在我的经验中,大多数的硬件性能问题主要和CPU、磁盘、内存相关,还没有遇到因为开发语言的运行效率对整个应用的性能造成影响,而应用程序设计的缺陷和数据库查询的滥用反倒是最最常见的性能问题。需要注意的是,大多数情况下,虽然性能瓶颈的起因是程序性能差或者是内存不足或者是磁盘瓶颈等各种原因,但最终表现出的结果就是CPU耗尽,系统负载极高,响应迟缓,甚至暂时失去响应,因此我们观察服务器状况时,最先看的就是系统负载和CPU空闲度。典型应用对系统资源使用的特点声明25典型应用对系统资源使用的特点动态内容为主的Web应用静态内容为主的Web应用(如SquidCache)数据库应用软件下载流媒体服务典型应用对系统资源使用的特点动态内容为主的Web应用26典型应用对系统资源使用的特点动态内容为主的Web应用频繁执行程序,如Perl,PHP,Java等,消耗CPU严重提供并发用户访问,因此系统进程数多,消耗内存多,当内存不足时,使用交换内存也会增加CPU的开销磁盘的写IO比较频繁(主要为随机写),比如生成cache文件,更新session文件等。内存充足时读取的内容可以被cache住,cache的命中率和文件更新的频繁程度成反比,磁盘的读IO相对较小典型应用对系统资源使用的特点动态内容为主的Web应用27典型应用对系统资源使用的特点静态内容为主的Web应用(如SquidCache)网络带宽瓶颈小文件的随机读取频繁,内存充足时可以缓解磁盘随机读的压力系统内存不足时磁盘IO量会比较大(读、写、交换内存),因此增加CPU的开销典型应用对系统资源使用的特点静态内容为主的Web应用(如S28典型应用对系统资源使用的特点数据库应用数据库查询语句复杂,大量的where子句,orderby,groupby排序等,CPU容易出现瓶颈表太大时,查询遍历全表造成磁盘读的IO量大,容易出现读IO等待的情况数据更新量大或者更新频繁时,造成磁盘写的IO量大内存不足时频繁使用交换内存典型应用对系统资源使用的特点数据库应用29典型应用对系统资源使用的特点软件下载网络带宽瓶颈存储系统带宽瓶颈(读)流媒体服务网络带宽瓶颈存储系统带宽瓶颈(读)典型应用对系统资源使用的特点软件下载30开始第6个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第6个话题性能分析的目的31常见的性能分析工具介绍VmstatTopFreeUptimesysstat工具包IozoneStrace希望看完以上工具的使用说明,让你能够知道如何判断系统瓶颈在那里、内存是否够用、CPU是否够用、磁盘IO是否够用、网络和磁盘带宽是否够用等问题。常见的性能分析工具介绍Vmstat32工具介绍-vmstatvmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。系统性能分析工具中,我使用最多的是这个,除了sysstat工具包外,这个工具能查看的系统资源最多。对于Linux的性能分析,100%理解vmstat输出内容的含义,那你对系统性能分析的能力就算是基本掌握了。我这里主要说明一下这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有6类,分别说明如下。工具介绍-vmstat33工具介绍-vmstatVmstat的输出格式如下(CentOS3.3)工具介绍-vmstatVmstat的输出格式如下(CentO34工具介绍-vmstatProcsr:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)b:处于不可中断状态的进程数,常见的情况是由IO引起的工具介绍-vmstatProcs35工具介绍-vmstatMemoryswpd:切换到交换内存上的内存(默认以KB为单位)如果swpd的值不为0,或者还比较大,比如超过100M了,但是si,so的值长期为0,这种情况我们可以不用担心,不会影响系统性能。free:空闲的物理内存buff:作为buffercache的内存,对块设备的读写进行缓冲cache:作为pagecache的内存,文件系统的cache如果cache的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IObi会非常小。工具介绍-vmstatMemory36工具介绍-vmstatSwapsi:交换内存使用,由磁盘调入内存so:交换内存使用,由内存调入磁盘内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。工具介绍-vmstatSwap37工具介绍-vmstatIobi:从块设备读入的数据总量(读磁盘)(KB/s),bo:写入到块设备的数据总理(写磁盘)(KB/s)随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大工具介绍-vmstatIo38工具介绍-vmstatSystemin:每秒产生的中断次数cs:每秒产生的上下文切换次数上面这2个值越大,会看到由内核消耗的CPU时间会越多工具介绍-vmstatSystem39工具介绍-vmstatCpuus:用户进程消耗的CPU时间百分比us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或者进行加速了(比如PHP/Perl)sy:内核进程消耗的CPU时间百分比sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。wa:IO等待消耗的CPU时间百分比wa的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。id:CPU处在空闲状态时间百分比工具介绍-vmstatCpu40工具介绍-vmstat情景分析这个vmstat的输出那些信息值得关注?Procsr:运行的进程比较多,系统很繁忙Iobo:磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常Cpuus:持续大于50,服务高峰期可以接受Cpuwa:稍微有些高Cpuid:持续小于50,服务高峰期可以接受工具介绍-vmstat情景分析41工具介绍-top这个命令可以查看系统中运行的进程的状况,CPU使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用CPU的多少排序。它可以显示全部CPU的使用状况,也可以显示每个进程都运行在那个CPU上面。

我习惯使用这个命令查看那些进程或者那类进程占用CPU和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程。工具介绍-top这个命令可以查看系统中运行的进程的状42工具介绍-topTop命令的输出1(CentOS3.3)工具介绍-topTop命令的输出1(CentOS3.3)43工具介绍-topTop命令的输出2(CentOS3.3)工具介绍-topTop命令的输出2(CentOS3.3)44工具介绍-top用top看到的内存的说明(Mem的第2行)actvactive活跃的内存页,正在映射给进程使用in_dinactive_dirty非活跃的内存页,并且内存数据被修改,需要写回磁盘in_cinactive_clean非活跃的内存页,干净的数据,可以被重新分配使用工具介绍-top用top看到的内存的说明(Mem的第2行45工具介绍-top问题?in_d和in_c以及cache,buffer的内存有何不同?

我的理解:actv,in_d,in_c是VM中对内存的管理组织形式,buffer是块设备读写缓冲,cache是文件系统缓存工具介绍-top问题?46工具介绍-top用top看到的进程所处的几种状态(STAT列)。D不可中断休眠,通常是IO操作所处的状态R正在执行的或者处在等待执行的进程队列中S休眠中T暂停刮起的(比如Ctrl+Z),也可能是被strace命令调用中的状态Z僵尸进程,进程执行完成,但由于其父进程没有销毁该进程,而被init进程接管进行销毁。W没有使用物理内存,所占用的物理内存被切换到交换内存<高优先级的进程N低优先级有时候一个进程会有多个状态的标志,比如SWN,SW工具介绍-top用top看到的进程所处的几种状态(STA47工具介绍-top情景分析前面两次top的输出那些信息值得关注?图1)Loadaverage:系统负载有降低的趋势,但仍然较高Running:有3个进程正在运行,正常,因为系统有4颗CPUCpuuser:接近200%了,有些大,服务高峰时可以接受Cpuidle:小于200%了,需要注意图2)Cpuiowait:接近200%了,很大工具介绍-top情景分析48工具介绍-freefree命令显示系统内存的使用状况(物理内存和交换内存)通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存工具介绍-freefree命令显示系统内存的使用状况(物理内49工具介绍-freefree命令输出的第二行(Mem)

这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。工具介绍-freefree命令输出的第二行(Mem)50工具介绍-freefree命令输出的第三行(-/+buffers/cache)这行最容易让人迷惑。它显示的第一个值(used这一列)是这样得来的:Mem行used列-Mem行buffers列-Mem行cached列

它显示的第二个值(free这一列)是这样得来的:Mem行free列+Mem行buffers列+Mem行cached列工具介绍-freefree命令输出的第三行(-/+buff51工具介绍-freefree命令输出的第四行(Swap)这行显示交换内存的总量、已使用量、空闲量通常buffer和cache可以使用的内存空间越大,系统IO和文件系统访问的性能越好。工具介绍-freefree命令输出的第四行(Swap)52工具介绍-uptime最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,我想是没有定论的,我介绍一下我的习惯。

我一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。

如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。工具介绍-uptime最简便的查看系统负载的工具,系53工具介绍-sysstat工具包这个工具包提供了著名的sar命令,还有非常实用的iostat,mpstat,sa1,sa2等命令。

这几个命令可实现前面提及工具大多数的功能,除此之外,还能查看系统的网络带宽状况、每块磁盘使用状况、每个磁盘分区的使用状况等。

工具介绍-sysstat工具包这个工具包提供了著名54工具介绍-sysstat工具包sa1,sa2这2个命令以配置在cron中定期执行,把系统当时的运行状况信息保存在磁盘上,每日存在一个文件中,因为有这个功能,因此sar工具不单是一个性能分析的工具,这2个命令的使用说明如下:sa1配置在cron中可以实现系统状态收集,比如10分钟运行一次sa2配置在cron中可以实现每日状态的汇总报告你可以在系统crontab中添加如下配置:*/10****root/usr/lib/sa/sa1115323***root/usr/lib/sa/sa2-A

工具介绍-sysstat工具包sa1,sa2这55工具介绍-其他IozoneIO和文件系统性能测试的工具,我也习惯用它作存储系统的性能分析。Strace如果我们知道一个程序执行效率很差,需要分析这个程序执行时的某个阶段或者某个系统调用的性能状况,可以使用strace命令。其他工具介绍-其他Iozone56开始第7个话题性能分析的目的性能分析相关的人性能相关的各个环节系统使用和优化的原则典型应用对系统资源使用的特点常见的性能分析工具介绍性能分析及优化的案例开始第7个话题性能分析的目的57性能分析及优化的案例动态内容为主的网站动态内容+Cache为主的网站性能分析及优化的案例动态内容为主的网站58动态内容为主的网站该网站系统结构说明1台Dell2650服务器,单颗Xeon3.0GCPU,1G内存,2块72GSCSI磁盘操作系统CentOS3.3应用基于LAMP架构,所有服务都在一台服务器上动态内容为主的网站该网站系统结构说明59动态内容为主的网站分析和优化的过程初期性能问题及处理第二次优化第三次优化第四次优化网站结构优化动态内容为主的网站分析和优化的过程60动态内容为主的网站初期性能问题及处理表现:早晨和下午访问高峰时,服务器频繁宕机,重启后的一段时间内能正常服务,过一会以后又变的响应缓慢,然后又宕机。检查:发现宕机前系统负载高,Apachehttpd.conf配置最大用户数为1024处理:修改httpd.conf配置文件,降到最大512个用户数,仍然频繁宕机,又降到256个用户数,系统不宕机了,但是负载很高,站点访问极慢动态内容为主的网站初期性能问题及处理61动态内容为主的网站初次优化深入分析系统资源使用情况(vmstat,top,ps)结论:CPU资源时常耗尽,因此造成响应缓慢或者长时间没有响应,主要是用户进程消耗资源严重。原因:PHP程序没有使用代码加速,网站首页是个PHP程序,每次用户访问都要多次查询数据库,其他程序也没有Cache机制,数据库查询负荷过高。处理:安装配置turck-mmcache代码加速器,改写网站首页以及部分频繁访问的程序增加cache机制,减少数据库访问。动态内容为主的网站初次优化62动态内容为主的网站第二次优化一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问分析系统资源使用状况,发现仍然是CPU耗尽后引起问题,但这次系统IO等待消耗的CPU资源比较大。原因:上次解决了CPU资源容易耗尽的问题,目前网站访问量增加了,apache进程数时常达到256个,导致内存使用殆尽,频繁使用交换内存,最终仍然导致CPU资源耗尽处理:把Apache配置中的KeepAlive特性关闭,进程数大量减少,基本保持在80个进程以内,还是会使用交换内存,但是服务正常了。动态内容为主的网站第二次优化63动态内容为主的网站第三次优化一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问分析发现还是CPU资源耗尽导致的原因。原因:程序频繁访问数据库,大量的SQL语句中有where,orderby等子句,而大量的表没有建索引,导致MySQL数据库负荷过高,消耗CPU资源过高。处理:优化程序中的SQL语句,where和orderby子句上的字段建索引,程序增加Cache机制,再次使服务恢复正常。动态内容为主的网站第三次优化64动态内容为主的网站第四次优化一段时间后,系统又开始不稳定,访问高峰时站点无法正常访问分析系统资源使用状况,发现还是CPU耗尽造成的原因:数据库查询过多,大部分都是复杂查询,时常需要遍历全表处理:优化程序中的SQL语句,增加where子句上的匹配条件,减少遍历全部的查询。动态内容为主的网站第四次优化65动态内容为主的网站网站结构优化鉴于程序的优化空间越来越小,避免以后仍然出现问题,增加了一台专用数据库服务器在后来的使用过程中,又陆续增加了1台Web前端服务器,和一台只用于读的MySQL数据库服务器动态内容为主的网站网站结构优化66动态内容+Cache为主的网站该网站系统结构说明多台Web前端服务器,配置都为单颗Xeon3.0GCPU,4G内存,2块73GSCSI磁盘操作系统CentOS3.3多台MySQL数据库服务器基于PHP开发的应用动态内容+Cache为主的网站该网站系统结构说明67动态内容+Cache为主的网站该应用的特点大量内容基于数据库,需要频繁访问数据库,并且数据更新很快采用页面cache机制缓解数据库压力,但页面cache只有5分钟有效期,需要频繁生成新的cacheCache以文件形式存在磁盘上,都是小文件,最小不到1k,最大不超过128k动态内容+Cache为主的网站该应用的特点68动态内容+Cache为主的网站问题描述访问高峰期时Web前端负载比较高,时常超过10访问高峰期时Web前端响应很慢性能分析负载比较高,时常会超过10,CPUIdel经常会小于30%,有时Idel为0,CPUiowait很大,经常超过30%,磁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论