您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 22提供性能优化方案---Google-Code
Linux系统性能测试与分析1、前言通过对系统中和性能相关的各个环节的介绍,使大家知道出现性能问题时可以从那些方面入手去查,而分析典型应用对系统资源使用的特点,让大家对应用和系统资源的依赖有了更直观的认识。大多数的硬件性能问题主要和CPU、磁盘、内存相关,还没有遇到因为开发语言的运行效率对整个应用的性能造成影响,而应用程序设计的缺陷和数据库查询的滥用反倒是最最常见的性能问题。需要注意的是,大多数情况下,虽然性能瓶颈的起因是程序性能差或者是内存不足或者是磁盘瓶颈等各种原因,但最终表现出的结果就是CPU耗尽,系统负载极高,响应迟缓,甚至暂时失去响应,因此我们观察服务器状况时,最先看的就是系统负载和CPU空闲度。当你阅读完了这遍文档以后就会有一个对系统分析的思路。2、性能分析的目的2.1找出系统性能瓶颈1.硬件瓶颈2.软件瓶颈2.2提供性能优化方案1.升级硬件2.改进系统结构达到合理的硬件和软件配置,使系统资源使用达到平衡。但遗憾的是解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一定的平衡。系统运行良好的时候恰恰也是各项资源达到了一个平衡体,任何一项资源的过渡使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如CPU过渡使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用虚拟内存又会造成磁盘IO增加和CPU开销增加(用于进程切换、缺页处理的CPU开销)3、性能相关的各个环节3.1硬件资源3.1.1、CPU⒈是否使用SMP。⒉单颗CPU的性能对依赖CPU的某些应用的影响很严重,比如数据库的查询处理。3.1.2、内存1.物理内存物理内存不够时会使用交换内存。2.交换内存使用交换内存会带来磁盘IO和CPU的开销增加。3.1.3、存储系统SCSI磁盘ATA/SATA磁盘RAID磁盘阵列(RAID0,RAID1,RAID5,RAID0+1)一些经验:1.小文件读写的性能瓶颈是磁盘的寻址(随机读写性能更差),评估的标准是tps2.大文件读写的性能瓶颈是带宽,评估的标准是持续的读写速度3.Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好3.1.4、带宽1.网络带宽⒉SCSI总线带宽大文件访问时SCSI的带宽瓶颈3.系统总线带宽3.2操作系统SMP性能VM性能IO性能(存储设备、网络设备、异步IO)文件系统性能(大文件优化、小文件优化、写优化、读优化、网络文件系统)多线程性能3.3服务器软件根据各个服务器的不同而定制不同的软件,这里就不多说了,服务器软件实在是太多了。3.4开发平台/中间件软件/框架软件没有什么规范的定义,按情况而定。3.5应用程序一些应用软件。4、典型应用对系统资源使用的特点4.1动态内容为主的Web应用⒈频繁执行程序,如Perl,PHP,Java等,消耗CPU严重。⒉提供并发用户访问,因此系统进程数多,消耗内存多,当内存不足时,使用交换内存也会增加CPU的开销。⒊磁盘的写IO比较频繁(主要为随机写),比如生成cache文件,更新session文件等。⒋内存充足时读取的内容可以被cache住,cache的命中率和文件更新的频繁程度成反比,磁盘的读IO相对较小。4.2静态内容为主的Web应用(如SquidCache)⒈网络带宽瓶颈。⒉小文件的随机读取频繁,内存充足时可以缓解磁盘随机读的压力。⒊系统内存不足时磁盘IO量会比较大(读、写、交换内存),因此增加CPU的开销。4.3数据库应用1.数据库查询语句复杂,大量的where子句,orderby,groupby排序等,CPU容易出现瓶颈。2.表太大时,查询遍历全表造成磁盘读的IO量大,容易出现读IO等待的情况。3.数据更新量大或者更新频繁时,造成磁盘写的IO量大。4.内存不足时频繁使用交换内存。4.4软件下载1.网络带宽瓶颈2.存储系统带宽瓶颈(读)4.5流媒体服务1.网络带宽瓶颈2.存储系统带宽瓶颈(读)5、系统使用和优化的原则5.1系统监控和数据数据对资源的使用状况作长期的监控和数据收集Snmp+MRTG(网络流量监控)Sar(系统资料监控及收集)5.2优化建议程序的优化和系统结构的优化比硬件的性能优化更有效5.3限制使用系统资源避免不受限制的使用系统资源设置各项服务对资源的使用限额,如Apache,MySQL,PHP等5.4保留空闲资源及资源均衡始终保留一定量的空闲资源多少合适?根据应用的特点,比如是否有突发性使用增长?日常情况下,保留至少60%的系统资源,以应付突发使用增长。日常情况下,资源使用率达到80%时,你必须有所行动了,尤其是web应用。系统硬件达到合理的配置(以适合应用的特点为依据,资源消耗均衡为目标)系统性能的水桶理论应用软件对资源的使用要均衡(理想目标)怎么样就算是均衡了?我也在摸索中……理想状况为:CPU消耗到50%的时候,磁盘的带宽也到50%,磁盘的tps也到50%,内存使用也到50%(除去可以提供给cache的内存)6、附件6.1常用工具详解6.1.1FreeFree:名称:显示系统内存的使用状况(物理内存和交换内存)格式:free[-b|-k|-m|-g][-l][-sdelay]描述:通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存常用选项:-b,-k,-m,-g分别以字节、KB、MB、GB为单位显示内存使用情况。-sdelay:显示每隔多少秒数来显示一次内存使用情况-l逐条的显示Low和High内存统计表输出信息简介:•free命令输出的第二行(Mem)这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。•free命令输出的第三行(-/+buffers/cache)。这行最容易让人迷惑。它显示的第一个值(used这一列)是这样得来的:Mem行used列-Mem行buffers列-Mem行cached列它显示的第二个值(free这一列)是这样得来的:Mem行free列+Mem行buffers列+Mem行cached列•free命令输出的第四行(Swap)这行显示交换内存的总量、已使用量、空闲量通常buffer和cache可以使用的内存空间越大,系统IO和文件系统访问的性能越好。6.1.2uptimeuptime:名称:显示系统正常运行多少时间格式:uptime描述:·uptime命令打印当前时间、系统正常运行的时间长度、联机用户数目和平均负载.负载平均值是以1分钟、5分钟、15分钟时间间隔开头的可运行的进程。·最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,我想是没有定论的,我介绍一下我的习惯。·我一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。6.1.3vmstatvmstat:名称:报告虚拟内存的统计信息格式:vmstat[-n][延时[次数]]描述:·vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。系统性能分析工具中,我使用最多的是这个,除了sysstat工具包外,这个工具能查看的系统资源最多。·对于Linux的性能分析,100%理解vmstat输出内容的含义,那你对系统性能分析的能力就算是基本掌握了。·我这里主要说明一下这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有6类,分别说明如下。常用选项:-n开关令第一次的信息只显示一次而不是周期地产生。-S单位大小-a显示活跃和不活跃的内存信息-s显示相关虚拟内存统计表•Procsr:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)b:处于不可中断状态的进程数,常见的情况是由IO引起的•Memoryswpd:切换到交换内存上的内存(默认以KB为单位)•如果swpd的值不为0,或者还比较大,比如超过100M了,但是si,so的值长期为0,这种情况我们可以不用担心,不会影响系统性能。free:空闲的物理内存buff:作为buffercache的内存,对块设备的读写进行缓冲cache:作为pagecache的内存,文件系统的cache•如果cache的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IObi会非常小。•Swapsi:交换内存使用,由磁盘调入内存so:交换内存使用,由内存调入磁盘•内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。•我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。•Io输出信息简介:bi:从块设备读入的数据总量(读磁盘)(KB/s)bo:写入到块设备的数据总理(写磁盘)(KB/s)•随机磁盘读写的时候,这2个值越大(如超出1M),能看到CPU在IO等待的值也会越大•Systemin:每秒产生的中断次数cs:每秒产生的上下文切换次数•上面这2个值越大,会看到由内核消耗的CPU时间会越多•Cpuus:用户进程消耗的CPU时间百分比•us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或者进行加速了(比如PHP/Perl)sy:内核进程消耗的CPU时间百分比•sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。id:CPU处在空闲状态时间百分比wa:IO等待消耗的CPU时间百分比•wa的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。•情景分析这个vmstat的输出那些信息值得关注?•Procsr:运行的进程比较多,系统很繁忙•Iobo:磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常•Cpuus:持续大于50,服务高峰期可以接受•Cpuwa:稍微有些高•Cpuid:持续小于50,服务高峰期可以接受6.1.4toptop:名称:显示执行中的程序进程格式:top[-][ddelay][q][c][S][s][i][n]描述:•这个命令可以查看系统中运行的进程的状况,CPU使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用CPU的多少排序。它可以显示全部CPU的使用状况,也可以显示每个进程都运行在那个CPU上面。•我习惯使用这个命令查看那些进程或者那类进程占用CPU和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程。常用选项:-d:指定更新的间隔,以秒计算。-q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。-c:显示进程完整的路径与名称。-S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。-s:安全模式。-i:不显示任何闲置(Idle)或无用(Zombie)的行程。-n:显示更新的次数,完成后将会退出top。Top命令使过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。空格:立刻刷新。P:根据CPU使用大小进行排序。T:根据时间、累计时间排序。q:退出top命令。m:切换显示内存信息。t:切换显示进程和CPU状态信息。W
本文标题:22提供性能优化方案---Google-Code
链接地址:https://www.777doc.com/doc-6361347 .html