Linux 服务器性能参数指标.docx

上传人:李司机 文档编号:7182126 上传时间:2024-06-29 格式:DOCX 页数:13 大小:193.99KB
返回 下载 相关 举报
Linux 服务器性能参数指标.docx_第1页
第1页 / 共13页
Linux 服务器性能参数指标.docx_第2页
第2页 / 共13页
Linux 服务器性能参数指标.docx_第3页
第3页 / 共13页
Linux 服务器性能参数指标.docx_第4页
第4页 / 共13页
Linux 服务器性能参数指标.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Linux 服务器性能参数指标.docx》由会员分享,可在线阅读,更多相关《Linux 服务器性能参数指标.docx(13页珍藏版)》请在三一办公上搜索。

1、这里只是一些简单的工具查看系统的相关参数,当然很多工具也是通过分析加工/proc.sys下的数据来工作的,而那些吏加细致、专业的性能监测和调优,可能还需要更加专业的工具(perf、systemtap等)和技术才能完成俄。毕竟来说,系统性能监控本身就是个大学问.广VOContrOHorJIIkitedaceTDIIDWkISwapswapon/INetWodCCOntrOMernicstatranspoctsnetstatIortIPortipthtool/SninpgetTlldptool一、CPlJ和内存类1.1topT-toptop-1M:13:57up1daye21:B1t6users,

2、loadaverage:3.13e1.07.Q.1Taslcs:25total,5running.2Bsleeping,Stopped9zombie%Cpu(5):1.7usv.7sy.0.ni.0.2id.0.va9.hi9.si.0.0stKiB:12三77272total.7SMS2fr.172f2SusedvS5971MbuFf/cacheKiBSwap:n2Vntotal.712OT2free,used.999MauailMenPIDUSERPRHUlRlRESSHRSCRJHEH“ME.CQHHAND17Mtazj?7337”3“5180R11.00.8M.33cc1plvs18M

3、tazj722697M510R9.i.7M.?9CelPlVS10Ktzj2722S512B9.M.27cclplws1Mtaj21f7S3S3979R5.A.SM.17cc1plV51230tazj20167M21812It.7M.1top13root2017root201051root22861root229989tOZj21root262root200000S0.30Q00S0.3.e0000S0.3.6000S.3.1338220892S0.3.00188980962388S0.00.0oes8.ooW15.01rcu-sched.89rcuos/3.51kworker2r00.9kw

4、orker8:000.6SSShd12.68systPRd00.04Hthrpadd3root2000S0.00.0000.20ksoftirqd第一行后面的三个值是系统在之前1、5.15的平均负载,也可以看出系统负载是上升、平稳、下降的趋势,当这个值超过CPU可执行单元的数目,则表示CPU的性能已经饱和成为瓶颈了.第二行统计了系统的任务状态信息。running很自然不必多说,包括正在CPU上运行的和将要被调度运行的;SIeePing通常是等待事件(比如IO麋作)完成的任务,细分可以包括interruptible和uninterruptible的类型;stopped是一些被皙停的任务,通常发送

5、SIGSTOP或者对一个前台任务掇作Ctrl-Z可以将其暂停;zombie儡尸任务,虽然迸程终止资源会被自动回收,但是含有退出任务的taskdescriptor需要父进程访问后才能释放,这种进程显示为defunct状态,无论是因为父进程提前退出还是未wait调用,出现这种进程都应该格外注意程序是否设计有误.第三行CPU占用率根据类型有以下几种情况:(US)user:CPU在低nice值(高优先级)用户态所占用的时间(niceO)。默认新启动的进程nice=。,是不会计入这里的,除非手动通过renice或者SetpriorityO的方式修改程序的nice值(id)idle:CPU在空闲状态(执行

6、kernelidlehandler)所占用的时间(Wa)iowait:等待IO完成做占用的时间(hi)irq:系统处理硬件中断所消耗的时间(si)SOftirq:系统处理软中断所消耗的时间,记住软中断分为SOftirqs.tasklets(其实是前者的特例)、workqueues,不知道这里是统计的是哪些的时间,毕竟workqueues的执行已经不是中断上下文了(St)SteaI:在虚拟机情况下才有意义,因为虚拟机下CPU也是共享物理CPU的,所以这段时间表明虚拟机等待hypervisor调度CPU的时间,也意味着这段时间hypervisor将CPU调度给别的CPU执行,这个时段的CPU资源被

7、“stolen了.这个值在我KVM的VPS机器上是不为0的,但也只有0.1这个数量级,是不是可以用来判断VPS超售的情况?CPU占用率高很多情况下意味着一些东西,这也给服务器CPU使用率过高情况下指明了相应地排直思路:当user占用率过高的时候,通常是某些个别的进程占用了大量的CPU,这时候很容易通过top找到该程序;此时如果怀疑程序异常,可以通过perf等思路找出热点调用函数来进一步排直;当system占用率过商的时候,如果IO操作(包括终端IO)比较多,可能会造成这部分的CPU占用率高,比如在fileserver,databaseserver等类型的服务器上,否则(比如20%)很可能有些部

8、分的内核、驱动模块有问题;当nice占用率过高的时候,通常是有意行为,当进程的发起者知道某些进程占用较高的CPU,会设笆其nice值确保不会淹没其他进程对CPU的使用请求;当iowait占用率过高的时候,通常意味着某些程序的IO操作效率很低,或者IO对应设备的性能很低以至于读写操作需要很长的时间来完成;当irq/softirq占用率过高的时候,很可能某些外设出现问题,导致产生大员的irq请求,这时候通过检查procinterrupts文件来深究问题所在;当steal占用率过高的时候,黑心厂商虚拟机超售了吧!第四行和第五行是物理内存和虚拟内存(交换分区)的信息:total=free+used+b

9、uff/cache,现在buffers和cachedMem信息总和到一起了,但是buffers和cachedMem的关系很多地方都没说清楚.其实通过对比数据,这两个值就是procmeminfo中的Buffers和Cached字段:Buffers是针对rawdisk的块缓存,主要是以rawblock的方式缓存文件系统的元数据(比如超级块信息等),这个值一般比较小(20M左右);而Cached是针对于某些具体的文件进行读缓存,以增加文件的访问效率而使用的,可以说是用于文件系统中文件缓存使用.而availMem是一个新的参数值,用于指示在不进行交换的情况下,可以给新开启的程序多少内存空间,大致和fr

10、ee+buff/cached相当,而这也印证了上面的说法,free+buffers+cachedMem才是真正可用的物理内存.并且,使用交换分区不见得是坏手情,所以交换分区使用率不是什么严更的参数,但是频繁的SW叩in/out就不是好事情了,这种情况需要注意,通常表示物理内存紧缺的情况.最后是每个程序的资源占用列表,其中CPU的使用率是所有CPUcore占用率的总和。通常执行top的时候,本身该程序会大量的读取Zproc操作,所以基本该top程序本身也会是名列前茅的.top虽然非常强大,但是通常用于控制台实时监测系统信息,不适合长时间(几天、几个月)监测系统的负载信息,同时对于短命的进程也会遗

11、潮无法给出统计信息.1. 2vmstatvmstat是除top之外另一个常用的系统检测工具,下面截图是我用-j4编译b。St的系统负载.IB*VmutVltfe1-onitN_,i-rystMT_icrb*dRfp*or,-X”CChrMZcPuid,t0143391531M16239176371U9,6BB1673971M22176923:1”333176*0,,:1,2”Aat7341a,0tw9S,12mi20WH*12”9$Sa3111127233112n5r表示可运行进程数目,数据大致相符;而b表示的是uninterruptible睡娓的进程数目;SWPd表示使用到的虚拟内存数量,跟

12、top-Swap-used的数值是一个含义,而如手册所说,通常情况下buffers数目要比cachedMem小的多,buffers一般20M这么个数量级;io域的bi、bo表明每秒钟向磁盘接收和发送的块数目(blocks/s);SyStem域的in表明每秒钟的系统中断数(包括时钟中断),cs表明因为进程切换导致上下文切换的数目.说到这里,想到以前很多人纠结编译IinUXkernel的时候-j参数究竟是CPUCore还是CPUCOre+1?通过上面修改-j参数值编译boost和Iinuxkernel的同时开启vmstat监控,发现两种情况下contextswitch基本没有变化,目也只有显著增加

13、-j值后contextswitch才会有显著的增加,看来不必过于纠结这个参数了,虽然具体编译时间长度我还没有测试.资料说如果不是在系统启动或者benchmark的状态,参数contextswitch100000程序肯定有问题.1.3 pidstat如果想对某个进程进行全面具体的追踪,没有什么比pidstat更合适的了一栈空间、缺页情况、主被动切换等信息尽收眼底.这个命令最有用的参数是-t,可以将进程中各个线程的详细信息罗列出来.-r:显示缺页错误和内存使用状况,缺页错误是程序需要访问映射在虚拟内存空间中但是还尚未被加栽到物理内存中的一个分页,缺页错误两个主要类型是minflts指的minorf

14、aults,当需要访问的物理页面因为某些原因(比如共享页面、缓存机制等)已经存在于物理内存中了,只是在当前进程的页表中没有引用,MMU只需要设笆对应的entry就可以了,这个代价是相当小的majflts指的majorfaults,MMU需要在当前可用物理内存中申请一块空闲的物理页面(如果没有可用的空闲页面,则需要将别的物理页面切换到交换空间去以释放得到空闲物理页面),然后从外部加载数据到该物理页面中,并设首好对应的entry,这个代价是相当高的,和前者有几个数据级的差异-S:栈使用状况,包括StkSize为线程保留的栈空间,以及StkRef实际使用的栈空间.使用Ulimit-S发现CentOS

15、6.x上面默认栈空间是10240K,而CentOS7.x、Ubuntu系列默认栈空间大小为8196Kpidstat-S-t-p181171.inux3.10.0-229.el7.866(localhost.Iocaldonain)O1O20170?02020?0?:27:80:27:00:27:00:27:00:27:00TGID18117TIDStkSizeStkReFConnand13616ailaud1811713616|_ailawd1812581928|_ailawd18126819212I_ilawd-U:CPU使用率情况,参数同前面类似-W:线程上下文切换的数目,还细分为cswc

16、h/s因为等待资源等因素导致的主动切换,以及nvcswch/s线程CPU时间导致的被动切换的统计如果每次都先PS得到程序的Pid后再操作Pidstat会显得很麻烦,所以这个杀手铜的-C可以指定某个字符串,然后Command中如果包含这个字符串,那么该程序的信息就会被打印统计出来,-I可以显示完整的程序名和参数-pidstat-W-t-C*,ailaw-I这么看来,如果查看单个尤其是多线程的任务时候,pidstat比常用的ps更好使!1.4 其他当需要单独监测单个CPU情况的时候,除了htop还可以使用mpstat,查看在SMP处理器上各个Core的工作量是否负线均衡,是否有某些热点线程占用Co

17、re.Tmpstat-PA1.1.1如果想直接监测某个进程占用的资源,既可以使用top-utaozj的方式过滤掉其他用户无关进程,也可以采用下面的方式进行选择,PS命令可以自定义需要打印的条目信息:while:;dops-eouser,pid,ni,pri,pcpu,psr,commgrep,ailawd,:sleep1;done如想理清继承关系,下面一个常用的参数可以用于显示进程树结构,显示效果比pstree详细美观的多psaxjf二、磁盘IO类iotop可以百观的显示各个进程、线程的磁盘读取实时速率;Isof不仅可以显示普通文件的打开信息(使用者),还可以麋作devsdal这类设备文件的打

18、开信息,那么比如当分区无法amount的时候,就可以通过Isof找出磁盘该分区的使用状态了,而且添加fg参数还可以额外显示文件打开flag标记.2.1iostatT-iostat-XZ1其实无论使用iostat-XZ1还是使用sar-d1,对于磁盘重要的参数是:avgqu-s:发送给设备1/0请求的等待队列平均长度,对于单个磁盘如果值1表明设备饱和,对于多个磁盘阵列的逻辑磁盘情况除外await(JaWait、w_await):平均每次设备I/O请求操作的等待时间(ms),包含请求排列在队列中和被服务的时间之和;svctm:发送给设备I/O请求的平均服务时间(ms),如果SVCtm与await很

19、接近,表示几乎没有I/O等待,磁盘性能很好,否则磁盘队列等待时间较长,磁盘响应较差;%util:设备的使用率,表明每秒中用于I/O工作时间的占比,单个磁盘当%util60%的时候性能就会下降(体现在await也会增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列的逻凿磁盘情况除外;还有,虽然监测到的磁盘性能比较差,但是不一定会对应用程序的响应造成影响,内核通常使用I/Oasynchronously技术,使用读写缓存技术来改善性能,不过这又跟上面的物理内存的限制相制约了.上面的这些参数,对网络文件系统也是受用的.三、网络类网络性能对于服务器的重要性不言而喻,工具iptraf可以直观的现

20、实网卡的收发速度信息,比较的简洁方便通过sar-nDEV1也可以得到类似的吞吐量信息,而网卡都标配了最大速率信息,比如百兆网卡千兆网卡,很容易查看设备的利用率.通常,网卡的传输速率并不是网络开发中最为关切的,而是针对特定的UDP.TCP连接的丢包率、击传率,以及网络延时等信息.3.1 netstat-netstat-s显示自从系统启动以来,各个协议的总体数据信息.虽然参数信息比较丰富有用,但是嵬计值,除非两次运行做差才能得出当前系统的网络状态信息,亦或者使用watch眼睹直观其数值变化趋势.所以netstat通常用来检测端口和连接信息的:netstat-all(八)-numeric(n)-tc

21、p(t)-udp(u)-timers(o)-Iistening(I)-program(p)TimerS可以取消域名反向查询,加快显示速度;比较启用的有*netstat-antp#列出所有TCP的连接Tnetstat-nltp#列出本地所有TCP侦听套接字,不要加-a参数3.2 sarsar这个工具太强大了,什么CPU、磁盘、页面交换啥都管,这里使用-n主要用来分析网络活动,虽然网络中它还给细分了NFS.IP.ICMP.SOCK等各种层次各种协议的数据信息,我们只关心TCP和UDP.下面的命令除了显示常规情况下段、数据报的收发情况,还包括TCPTsudosar-nTCP1ETCP1active/

22、s:本地发起的TCP连接,比如通过connect(),TCP的状态从C1.OSED-SYN-SENTpassive/s:由远程发起的TCP连接,比如通过accept(),TCP的状态从1.ISTEN-SYN-RCVDretranss(tcpRetransSegs):每秒钟TCP重传数目,通常在网络质髭差,或者服务器过我后表包的情况下,根据TCP的确认里传机制会发生重传操作isegerrs(tcpInErrs):每秒钟接收到出错的数据包(比如checksum失败)UDPTsudosar-nUDP1noports(udpNoPorts):每秒钟接收到的但是却没有应用程序在指定目的端口的数据报个数i

23、dgmerr/S(UdPInErrOrS):除了上面原因之外的本机接收到但却无法派发的数据报个数当然,这些数据一定程度上可以说明网络可靠性,但也只有同具体的业务需求场景结合起来才具有意义.3.3tcpdunptcpdump不得不说是个好东西.大家都知道本地调试的时候喜欢使用wireshark,但是线上服务端出现问题怎么弄呢?附录的参考文献给出了思路:豆原环境,使用tcpdump进行抓包,当问题豆现(比如日志显示或者某个状态显现)的时候,就可以结束抓包了,而且tcpdump本身带有-C/-W参数,可以限制抓取包存精文件的大小,当达到这个这个限制的时候保存的包数据自动rotate,所以抓包数量总体

24、还是可控的。此后将数据包交下线来,用wireshark想怎么看就怎么看,岂不乐战!tcpdump虽然没有GUI界面,但是抓包的功能丝身不弱,可以指定网卡、主机、端口、协议等各项过源参数,抓下来的包完整又带有时间战,所以线上程序的数据包分析也可以这么简单.下面就是一个小的测试,可见Chrome启动时候自动向Webserver发起建立了三条连接,由于这里限制了dstport参数,所以服务端的应答包被过滴掉了,拿下来用wireshark打开,SYNC、ACK建立连接的过程还是很明显的!在使用tcpdump的时候,需要尽可能的配置抓取的过渔条件,一方面便于接下来的分析,二则tcpdump开启后对网卡和

25、系统的性能会有影响,进而会即响到在线业务的性能.2.H771M3U2.2tt.l.n4192.1M.1.6ceTCPM5”7*UKeJs*i*IIZ也川2iiA“S2DNS1(SV!-YKXiW2IESMSST2蕤M.0加X2.1M.1.U4mea,6fC*66S211l*9n($VH;Srji,Tf219JWSA4.M1MJ12.1M.1.22412.1M.1TCFMU1911(ACK)ACMWiftS5MIfS.M21X3192.164.1.224TCF(ACKSm1Ack21d,MlI.eeu4IKlM.1.224TCFMUlTXMtn(MKACtdMC12.26.X.224IM.XM.X.eEA1MT/M11tl.lIK.1M.1.224m.iM.c(c)*4MACt“67dmskn三IK.1M.1.H4m.iM.E皿丫*V1W.UOMTW1.1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号