0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux常用检测性能的10个基本命令汇总

马哥Linux运维 来源:未知 作者:李倩 2018-08-21 17:33 次阅读

本文的内容主要来自对Netflix的一篇技术博客(Linux Performance Analysis in 60,000 Milliseconds,并添加了一些自己的理解,仅供参考。

1. uptime

$uptime23:51:26up21:31,1user,loadaverage:30.02,26.43,19.0212

该命令可以大致的看出计算机的整体负载情况,load average后的数字分别表示计算机在1min、5min、15min内的平均负载。

2. dmesg | tail

$dmesg|tail[1880957.563150]perlinvokedoom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0[...][1880957.563400]Outofmemory:Killprocess18694(perl)score246orsacrificechild[1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB[2320864.954447]TCP:PossibleSYNfloodingonport7001.Droppingrequest.CheckSNMPcounters.123456

打印内核环形缓存区中的内容,可以用来查看一些错误;

上面的例子中,显示进程18694 因引内存越界被kill掉以及TCP request被丢弃的错误。通过dmesg可以快速判断是否有导致系统性能异常的问题。

3. vmstat 1

$vmstat1procs---------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast3400200889792737085918280005610961300320020088992073708591860000592132844282981100320020089011273708591860000095012154991000320020088956873712591856000481190024599900003200200890208737125918600000158984840981100^C123456789

打印进程、内存、交换分区、IO和CPU等的统计信息

vmstat的格式如下

>vmstat[options][delay[count]]

vmstat第一次输出表示从开机到vmstat运行时的平均值;剩余输出的都是在指定的时间间隔内的平均值,上述例子中delay的值设置为1,除第一次以外,剩余的都是1秒统计一次,count未设置,将会一直循环打印。

$vmstat103procs-----------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast1002527112108688813720228001142111990000025271561086888137198560001043003490100990000025264121086888137199040001033454870019900123456

上述的例子中delay设置为10,count设置为3,表示每行打印10秒内的平均值,只打印3次。

需要检查的列

r:表示正在运行或者等待CPU调度的进程数。因为该列数据不包含I/O的统计信息,因此可以用来检测CPU是否饱和。若r列中的数字大于CPU的核数,表示CPU已经处于饱和状态。

free:当前剩余的内存;

si, so:交换分区换入和换出的个数,若换入换出个数大于0,表示内存不足;

us, sy, id, wa:CPU的统计信息,分别表示user time、system time(kernel)、idle、wait I/O。I/O处理所用的时间包含在system time中,因此若system time超过20%,则I/O可能存在瓶颈或异常;

4. mpstat -P ALL 1

$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%steal%guest%gnice%idle04:03:55PMall3.670.000.610.710.000.000.000.000.0095.0204:03:55PM03.520.000.570.760.000.000.000.000.0095.1504:03:55PM13.830.000.610.710.000.000.000.000.0094.8504:03:55PM23.800.000.610.600.000.000.000.000.0094.9904:03:55PM33.680.000.580.600.000.000.000.000.0095.1304:03:55PM43.540.000.570.600.000.000.000.000.0095.30[...]1234567891011

该命令用于每秒打印一次每个CPU的统计信息,可用于查看CPU的调度是否均匀。

5. pidstat 1

$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.660.0011.3215mesos-slave07:41:03PM043540.940.940.001.898java07:41:03PM065211596.231.890.001598.1127java07:41:03PM065641571.707.550.001579.2528java07:41:03PM60004601540.944.720.005.669pidstat07:41:03PMUIDPID%usr%system%guest%CPUCPUCommand07:41:04PM042146.002.000.008.0015mesos-slave07:41:04PM065211590.001.000.001591.0027java07:41:04PM065641573.0010.000.001583.0028java07:41:04PM10867181.000.000.001.000snmp-pass07:41:04PM60004601541.004.000.005.009pidstat^C123456789101112131415161718

该命令用于打印各个进程对CPU的占用情况,类似top命令中显示的内容。pidstat的优势在于,可以滚动的打印进程运行情况,而不像top那样会清屏。

上述例子中,%CPU中两个java进程的cpu利用率分别达到了1590%和1573%,表示java进程占用了16颗CPU。

6. iostat -xz 1

类似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/savgrq-szavgqu-szawaitr_awaitw_awaitsvctm%utilxvda0.000.230.210.184.522.0834.370.009.9813.805.422.440.09xvdb0.010.001.028.94127.97598.53145.790.000.431.780.280.250.25xvdc0.010.001.028.86127.79595.94146.500.000.451.820.300.270.26dm-00.000.000.692.3210.4731.6928.010.013.230.713.980.130.04dm-10.000.000.000.940.013.788.000.33345.840.04346.810.010.00dm-20.000.000.090.071.350.3622.500.002.550.235.621.780.03[...]^C123456789101112131415

检查列

r/s, w/s, rkB/s, wkB/s,表示每秒向I/O设备发出的reads、writes、read Kbytes、write Kbytes的数量。

await,表示应用程序排队等待和被服务的平均I/O时间,该值若大于预期的时间,这表示I/O设备处于饱和状态或者异常。

avgqu-sz,表示请求被发送给I/O设备的平均时间,若该值大于1,则表示I/O设备可能已经饱和;

%util,每秒设备的利用率;若该利用率超过60%,则表示设备出现性能异常;

7. free -m

$free-mtotalusedfreesharedbufferscachedMem:245998245452214538359541-/+buffers/cache:23944222053Swap:00012345

检查的列:

buffers: For the buffer cache, used for block device I/O.

cached: For the page cache, used by file systems.

若buffers和cached接近0,说明I/O的使用率过高,系统存在性能问题。Linux中会用free内存作为cache,若应用程序需要分配内存,系统能够快速的将cache占用的内存回收,因此free的内存包含cache占用的部分。

8. sar -n DEV 1

sar是System Activity Reporter的缩写,系统活动状态报告。

-n { keyword [,…] | ALL },用于报告网络统计数据。keyword可以是以下的一个或者多个: DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP, SOCK6, IP6, EIP6, ICMP6, EICMP6 和UDP6。

-n DEV 1, 每秒统计一次网络的使用情况;-n EDEV 1,每秒统计一次错误的网络信息;

$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:58PMens323286.007207.00283.3418333.900.000.000.0003:54:58PMlo0.000.000.000.000.000.000.0003:54:58PMvethe915e510.000.000.000.000.000.000.0003:54:58PMdocker00.000.000.000.000.000.000.0003:54:58PMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s03:54:59PMens323304.007362.00276.8918898.510.000.000.0003:54:59PMlo0.000.000.000.000.000.000.0003:54:59PMvethe915e510.000.000.000.000.000.000.0003:54:59PMdocker00.000.000.000.000.000.000.00^C123456789101112131415

IFACE ,网络接口名称;

rxpck/s ,每秒接收到包数;

txpck/s ,每秒传输的报数;(transmit packages)

rxkB/s ,每秒接收的千字节数;

txkB/s ,每秒发送的千字节数;

rxcmp/s ,每秒接收的压缩包的数量;

txcmp/s ,每秒发送的压缩包的数量;

rxmcst/s,每秒接收的组数据包数量;

9. sar -n TCP,ETCP 1

该命令可以用于粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量;

TCP, 报告关于TCPv4网络流量的统计信息;

ETCP, 报告有关TCPv4网络错误的统计信息;

$sar-nTCP,ETCP1Linux3.10.0-514.26.2.el7.x86_64(aushop)05/31/2018_x86_64_(2CPU)04:16:27PMactive/spassive/siseg/soseg/s04:16:44PM0.002.0015.0013.0004:16:45PM0.003.00126.00203.0004:16:46PM0.000.0099.0099.0004:16:47PM0.000.0018.009.0004:16:48PM0.000.005.006.0004:16:49PM0.000.001.001.0004:16:50PM0.001.004.004.0004:16:51PM0.003.00171.00243.00^C12345678910111213

检测的列:

active/s: Number of locally-initiated TCP connections per second (e.g., via connect()),发起的网络连接数量;

passive/s: Number of remotely-initiated TCP connections per second (e.g., via accept()),接收的网络连接数量;

retrans/s: Number of TCP retransmits per second,重传的数量;

10. top

top命令包含更多的指标统计,相当于一个综合命令。

$toptop-00:15:40up21:56,1user,loadaverage:31.09,29.87,29.92Tasks:871total,1running,868sleeping,0stopped,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.554208cachedMemPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND20248root2000.227t0.012t18748S30905.229812:58java4213root20027225446464044232S23.50.0233:35.37mesos-slave66128titancl+2002434423321172R1.00.00:00.07top5235root20038.227g54700449996S0.70.22:02.74java4299root20020.015g2.682g16836S0.31.133:14.42java1root2003362029201496S0.00.00:03.82init2root200000S0.00.00:00.02kthreadd3root200000S0.00.00:05.35ksoftirqd/05root0-20000S0.00.00:00.00kworker/0:0H6root200000S0.00.00:06.94kworker/u256:08root200000S0.00.02:38.05rcu_sched12345678910111213141516171819

11. 总结

下面的图片很好的展示了各个命令的主要作用,如使用vmstat查看系统的整体性能,mpstat用于查看cpu的性能,pidstat用于查看进程的状态,iostat用于查看io的状态,free用于产看内存的状态,sar用于产看网络的状态等。

image.png

Linux常用性能工具一览

Linux Performance Tools

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10406

    浏览量

    206451
  • Linux
    +关注

    关注

    87

    文章

    10972

    浏览量

    206666

原文标题:Linux性能检测常用的10个基本命令

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    后端开发必备Linux命令汇总

    后端开发必备Linux命令汇总
    发表于 11-21 14:05 264次阅读

    Linux本命令总结

    都说Linux命令多,实际工作中我们又有多少命令会接触用到呢?本文跟大家分享Linux运维工作中常用的600个
    的头像 发表于 01-11 10:32 564次阅读

    linux本命令

    Linux基本操作:一.启动终端: 二.基本命令:1. cd 改变路径cd 目录名 //进入某个目录cd ..//cd “两点”:返回上一级目录cd -// cd “短横”:返回上一次所在目录
    发表于 08-23 08:29

    linux的基本命令

    linux本命令(三)
    发表于 05-21 13:33

    Linux系统的一些常用的基本命令分享

    Linux系统的一些常用的基本命令
    发表于 01-04 06:36

    如何去使用嵌入式Linux开发工具和linux常用本命令

    RTSP流媒体传输协议包括哪些?如何去使用嵌入式Linux开发工具和linux常用本命令呢?
    发表于 11-12 06:52

    浅析Linux概念和基本命令

    Linux是什么?Linux的基本命令有哪些?
    发表于 12-24 07:50

    linux入门与基本命令相关资料下载

    linux入门与基本命令
    发表于 03-28 16:52 11次下载

    linux入门与基本命令1相关资料下载

    linux入门与基本命令1相关资料下载
    发表于 03-28 16:55 18次下载

    linux系统入门与基本命令-1版 相关资料下载

    linux系统入门与基本命令-1版
    发表于 03-28 16:58 0次下载

    linux教程之常用的基本命令资料概述

    近几年来,尽管Linux 发展得非常迅速,图形界面越来越友好,但是在真正的开发过程中,Linux命令行的应用还是占有非常重要的席位,而且许多Linux 功能在
    发表于 10-23 18:57 0次下载
    <b class='flag-5'>linux</b>教程之<b class='flag-5'>常用</b>的基<b class='flag-5'>本命令</b>资料概述

    Linux常用20条命令汇总

    每个人使用Linux的目的都不同,所以常用命令差异非常大,而对于C/C++和shell程序编写较多人来说,也是存在很常用命令
    的头像 发表于 01-18 14:35 3502次阅读

    linux本命令说明参数讲解教程

    linux本命令说明参数讲解教程说明。
    发表于 03-25 16:00 9次下载

    Linux系统中EXP命令详解质量汇总

    Linux系统中EXP命令详解质量汇总
    发表于 05-14 09:35 1次下载

    Linux常用命令TOP 10超详细汇总,入门必学。

    Linux常用命令TOP 10超详细汇总,入门必学。 大家应该都知道Linux操作系统,就算不熟悉至少也听说过吧,由于它是开放性的,也是免费
    的头像 发表于 10-09 14:31 954次阅读