今天给大家介绍10个性能测试常用的基本命令。1.uptime$uptime23:51:26up21:31,1user,loadaverage:30.02,26.43,19.02这个命令可以大致看出电脑的整体负载情况,15min内的平均负载。2.dmesg|尾$dmesg|tail[1880957.563150]perl调用oom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0[...][1880957.563400]内存不足:Killprocess18694(perl)sacrificchild[246or1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB[2320864.954447]TCP:端口7001上可能发生SYN泛洪。删除请求。CheckSNMPcountersinringbuffer可以用来查看一些错误;在上面的例子中,显示进程18694由于内存违例和TCP请求被丢弃的错误而被杀死。通过dmesg可以快速判断是否存在导致系统性能异常的问题。3.vmstat1$vmstat1procs--------内存--------------swap-------io-----system--------cpu-----?rb?swpdfreebuffcachesiso????bibo???incs?ussy?idwast3400200889792737085918280005610961300320020088992073708591860000592132844282981100320020089011273708591860000095012154991000320020089568737125918560004811900245999000032020089020873712591860000158984840981100打印进程、其他IO和CPU统计数据、内存、开关。[count]]vmstat第一个输出表示从上电到vmstat运行的平均值;剩余输出是指定时间间隔内的平均值。在上面的例子中,delay的值设置为1,除了第一次,其余的都是每秒计数一次。如果未设置计数,它将一直循环打印。$vmstat103procs------------内存---------------swap-------io-----system-------CPU-----RBSWPDFreeBuffCacheSisobiBoinCSSYID10025271121086888137202280114211111199000002527198856000000000000000000104300349010099000000252641210868881371990400001033454870019900在上面的例子中,每一行的平均值是设置为3,延迟设置为1in0,只打印3次。Columntocheckr:表示正在运行或等待CPU调度的进程数。因为该列数据不包含I/O统计信息,所以可以用来检测CPU是否饱和。如果r列的数字大于CPU核心数,则表示CPU已饱和。free:当前剩余内存;si,so:swap分区的换入换出数,如果换入换出数大于0,则表示内存不足;us,sy,id,wa:CPU统计信息,分别表示用户时间、系统时间(内核)、空闲、等待I/O。用于I/O处理的时间包含在系统时间中,所以如果系统时间超过20%,则可能存在I/O瓶颈或异常;4.mpstat-PALL1$mpstat-PALLLinux3.10.0-229.el7.x86_64(localhost.localdomain)05/30/2018_x86_64_(16CPU)04:03:55PMCPU%usr%nice%sys%IOWAIT%IRQ%soft%窃取%guest%gnice%闲置04:03:55pm全部3.670.000.610.610.710.000.000.000.000.000.0095.020204:03:55pm03.520.520.570.570.760.760.000.000.000.000.000.000.000.000.000.000.000.0095.1504:03:55PM13.830.000.610.710.000.000.000.000.0094.8504:03:55pm23.800.000.610.610.600.000.000.000.000.000.000.0094.9904:03:03:03:550.00.000.000.0095.30[...]每秒打印每个CPU的统计信息,可以用来查看CPU调度是否均匀。5.pidstat1$pidstat1Linux3.13.0-49-generic(titanclusters-xxxxx)07/14/2015_x86_64_(32CPU)07:41:02PMUIDPID%usr%system%guest%CPUCPUCommand07:41:03pm090.000.940.000.941rcuos/007:41:03PM042145.665.665.665.660.0011.3215Mesos-slave07:41:03PM04354043540.940.940.940.940.000.001.898JAVA078JAVA07:41:41:41:03PM06596.6596.6.6.6.6.6.6.6.6.6.66.6.66.66.66.66.66.6pm06596.6.6.6.6.6.66.6.6.6.66.66.66.6l.1596.6.6.6.6.6.66.66.66.66in1598.11????27??java07:41:03?PM?0??????6564?1571.70????7.55????0.00?1579.25????28??java07:41:03?PM?60004?????60154????0.94????4.72????0.00????5.66?????9??pidstat07:41:03?PMUIDPID%usr%system??%guest%CPUCPUCommand07:41:04PM042146.002.000.008.0015Mesos-Slave07:41:04PM065211590.001.001.000.001591.0027JAVA07:41:04PM065641573.0010.0010.000.000.000.000.001583.00-pass07:41:04PM60004601541.004.000.005.009pidstat^C该命令用于打印每个进程的CPU使用率。和top命令显示的内容类似,pidstat的好处是可以滚动的方式打印进程的运行状态,而不是像top那样清屏。在上面的例子中,两个java进程在%CPU中的cpu使用率分别达到了1590%和1573%,说明java进程占用了16个CPU。6.iostat-xz1类似于vmstat,第一个输出是系统启动到统计这段时间的采样数据;$iostat-xz1Linux3.13.0-49-generic(titanclusters-xxxxx)07/14/2015_x86_64_(32CPU)avg-cpu:%user%nice%system%iowait%steal%idle73.960.003.730.030.0622.21Device:rrqm/swrqm/sr/sw/srkB/swkB-s-zavgrqawait?r_awaitw_awaitsvctm%utilxvda?0.00?????0.23????0.21????0.18?????4.52?????2.08????34.37?????0.00????9.98???13.80????5.42???2.44???0.09xvdb?0.01?????0.00????1.02????8.94???127.97???598.53???145.79?????0.00????0.43????1.78????0.28???0.250.25xvdc?0.01?????0.00????1.02????8.86???127.79???595.94???146.50?????0.00????0.45????1.82????0.30???0.27???0.26dm-00.000.000.692.3210.4731.6928.010.013.230.713.980.130.04dm-0.000.000.940.013.788.000.33345.84346.810.00DM-20.000.090.350.3622220.002.550.235.621.780.03[...]^C检查列r/s、w/s、rkB/s、wkB/s,指示发送到I/O的读取、写入、读取Kbytes和写入Kbytesdevicepersecondawait的数量表示应用程序排队等待并被服务的平均I/O时间。如果该值大于预期时间,则表示I/O设备饱和或异常。avgqu-sz,表示请求发送到I/O设备的平均时间,如果该值大于1,则表示I/O设备可能已经饱和;%util,设备每秒的使用率;如果使用率超过60%,说明设备性能异常;7.Free-m$Free-MTotalUsedFreeSharedBuffersCachedmem:245998245452214538359541-/+Buffers/Cache:23944222053SWAP:000缓冲区缓存,用于块设备I/O.cached:For文件系统使用的页面缓存。如果buffers和cached接近于0,则表示I/O使用率过高,系统存在性能问题。Linux使用空闲内存作为缓存。如果应用程序需要分配内存,系统可以快速回收缓存占用的内存,因此空闲内存包括缓存占用的部分。8、sar-nDEV1sar是SystemActivityReporter的缩写,系统活动状态报告。-n{关键字[,…]|ALL}报告网络统计信息。关键字可以是以下一项或多项:DEV、EDEV、NFS、NFSD、SOCK、IP、EIP、ICMP、EICMP、TCP、ETCP、UDP、SOCK6、IP6、EIP6、ICMP6、EICMP6和UDP6。-nDEV1,每秒统计网络使用情况;-nEDEV1,每秒统计错误的网络信息;$sar-nDEV1Linux3.10.0-229.el7.x86_64(localhost.localdomain)05/31/2018_x86_64_(16CPU)03:54:57PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s03:54:58?PMens32?3286.00???7207.00????283.34??18333.90??????0.00??????0.00??????0.003:54:58PMLO0.000.000.000.000.000.000.0003:54:58PMVethe9151510.000.000.000.000.000.0003:54:58PMDocker00.000.000.000.000.003:54:58下午ifAceRXPCK/STXPCK/StxpckRXKB/STXKB/SRXCMP/STXCMP/SRXMCST/S03:54:59下午ENS323304.007362.00276.0.00.00276.0.00.00898854:0.000.000.000.00.005.515E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E915E91915E910.000.000.000.0003:54:59PMdocker00.000.000.000.000.000.000.00^CIFACE,网络接口的名称;rxpck/s,每秒接收的数据包数;txpck/s,每秒传输的报告数;(transmitpackages)rxkB/s,每秒接收的千字节数;txkB/s,每秒发送的千字节数;rxcmp/s,每秒接收到的压缩包数;txcmp/s,每秒发送的压缩包数;rxmcst/s,每秒接收到的组包数;9.sar-nTCP,ETCP1这个命令可以用来粗略判断网络的吞吐量,比如发起的网络连接数和接收到的网络连接数;TCP,上报TCPv4网络流量统计;ETCP,报告有关TCPv4Statisticsfornetworkerrors的信息;$sar-nTCP,ETCP1Linux3.10.0-514.26.2.el7.x86_64(aushop)05/31/2018_x86_64_(2CPUs)04:16:27PMactive/spassive/siseg/soseg/s04:16:44PM0.002.0015.0013.0004:16:45PM0.003.003.00126.00203.0004:16:46PM0.000.000.0099.0099.0004:16:16:16:47PM0.000.000.0018.009.0004:16:16:16:16:480.000.001.001.0004:16:50PM0.001.004.004.0004:16:51PM0.003.00171.00243.00^C检测到的列:active/s:每个TCP连接的本地启动数,通过connect()),网络数连接启动;passive/s:每秒远程发起的TCP连接数(例如,通过accept()),接收到的网络连接数;retrans/s:NumberofTCPretransmitspersecond,重传次数;10、toptop命令包含了更多的指标统计,相当于一个全面的命令$toptop-00:15:40up21:56,1位用户,平均负载:31.09,29.87,29.92Tasks:总计871,1运行,868睡眠,0停止,2zombie%Cpu(s):96.8us,0.4sy,0.0ni,2.7id,0.1wa,0.0hi,0.0si,0.0stKiBMem:25190241+total,24921688used,22698073+free,60448buffersKiBSwap:0total,0used,0free。554208缓存的mempid用户prnivirsshrs%cpu%memtime+命令20248根2000.227T0.012T0.012T18748S30905.229812:58java4213root2002722544646404464044232S23.50.50.5035.035.035.035.035.035.035.035.035.035.035.035.033;titancl+?20???0???24344???2332???1172?R?1.0??0.0???0:00.07?top??5235?root?20???0?38.227g?547004??49996?S?0.7??0.2???2:02.74?java??4299?root?20???0?20.015g?2.682g?16836?S?0.3??1.1??33:14.42?java?1?root?20???0???33620???29201496s0.00.00:03.82init2root2000000S0.00.00:00.02kthreadd3root20000000S0.00.00.00:05.35ksoftirqd/050S0.00.00:00.00kWorker/0:0H6ROOT200000S0.00:0:06.94kWorker/U256:08ROOT200000S0.00.02:38.05RCU_SCHED11。展示了各个命令的主要功能,比如使用vmstat查看系统整体性能,mpstat查看cpu性能,pidstat查看进程状态,iostat查看io状态,free用于查看内存状态,sar用于查看网络状态等。原文:https://medium.com/netflix-te...如有错误或其他问题,欢迎留言和评论纠正我。如果有帮助,请点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路
