vmstat

可以用来监控虚拟内存。可对操作系统的虚拟内存、IO、CPU等多个指标的整体情况进行监视。

Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。

hello@ubuntu:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st

内存方面:

swpd:已经使用的交换内存(kb)

free:空闲的物理内存(kb)

buff:用作缓冲区的内存数(kb)

cache:用作高速缓存的内存数(kb)

si、so 两列,表示磁盘和内存之间交换的频繁程度。

分析思路:

如果 si、so 数值长期很大并且free长期很小,表示物理内存不能满足需要,也就是内存不足。由于磁盘的性能比内存是慢很多的,所以如果存在大量的页面交换,那么系统的性能必然会受到很大影响。

CPU方面:

r:展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。

us:用户CPU时间。

sy:系统CPU时间。

id:空闲CPU时间。

wa:等等I/O CPU时间。

us+sy+id+wa=100%

分析思路:

如果 r 经常大于4,且id经常小于40,表面CPU的负荷很重。

free

可以用来观察内存使用情况。

hello@ubuntu:~$ free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:

total= used + free

分析思路:

当 –/+ buffers/cache中的free长时间接近0,且 swap used长时间比较大时,说明物理内存已经不够用了,需要升级内存或降低内存的使用量。

pmap

格式 pmap pid

会详细显示该进程所用的内存情况。

iostat

可以用来监控磁盘I/O的情况。

hello@ubuntu:~$ iostat
Linux 3.19.--generic (ubuntu) // _i686_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
5.02 5.66 4.47 1.92 0.00 82.94 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 35.98 599.77 179.38

显示结果为从系统开机到当前执行时刻的统计信息。

第一行显示系统版本、主机名、日期等信息。

avg-cpu:显示总体CPU使用情况统计信息。如果是多核CPU的话,这里取平均值。

Device: 显示各磁盘设备的IO统计信息。

主要关注点:

avg-cpu 的 %iowait:表明CPU用于等待I/O请求完成的时间。

Device 的 tps:每秒进程下发的I/O读写请求数量。

hello@ubuntu:~$ iostat -x
Linux 3.19.--generic (ubuntu) // _i686_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
5.51 1.66 5.25 1.89 0.00 85.69 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.20 10.88 31.60 4.14 660.97 131.62 44.36 0.44 12.45 7.26 52.10 1.94 6.95

显示和I/O相关的更详细的数据。

主要关注点:

avgqu-sz:是平均请求队列的长度。毫无疑问,队列长度越短越好。

await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

分析思路:

如果%util值长期处于100%左右,并且avgqu-sz的值比较大,同时await的值远大于svctm,可以认为磁盘的处理能力不够。

如果只有一个指标持续走高,需要结合mem指标来看,是否是由于内存空间不够导致磁盘的使用增加。

mpstate

Multiprocessor Statistics的缩写。在多CPU的系统里,可以查看所有CPU的信息。

hello@ubuntu:~$ mpstat
Linux 3.19.--generic (ubuntu) // _i686_ ( CPU) :: PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
:: PM all 1.20 0.03 0.60 0.05 0.00 0.00 0.00 0.00 0.00 98.12

虽然vmstat、iostat以及 top 也可以查看CPU信息,但是它们都是显示平均数,并不会显示每个CPU的情况。

top

可以实时显示系统中各个进程的占用情况。

top - :: up  min,   users,  load average: 0.09, 0.38, 0.24
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 6.4 us, 6.9 sy, 1.0 ni, 84.5 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: total, used, free, buffers
KiB Swap: total, used, free. cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root S 6.3 0.6 :00.66 vmtoolsd
root S 6.3 3.7 :04.40 Xorg
root S 6.3 2.7 :01.52 gnome-termi+
root S 0.0 0.4 :03.98 init
root S 0.0 0.0 :00.00 kthreadd
root S 0.0 0.0 :00.12 ksoftirqd/
root - S 0.0 0.0 :00.00 kworker/:0H

上部分列出了系统整体的统计信息:任务、CPU、内存、交换区等信息。

下部分列出了进程的详细情况。

uptime

可以查看系统负载。显示的和top命令第一行一样。

hello@ubuntu:~$ uptime
:: up :, users, load average: 0.00, 0.01, 0.05

当前时间 14:54:25

系统已运行时间 3:36

当前在线用户 2个

平均负载:一定时间内CPU任务队列的平均长度,是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。上面3个数分别是“最近一分钟系统的负载(0.00)、最近5分钟系统的负载(0.01)、最近15分钟系统的负载(0.05)”

分析思路:

如果load average指标的5分钟以及15分钟的值长 大于 CPU个数*CPU核数*0.7,并且us长时间比较高,说明CPU不够用,需要升级CPU或调整程序的算法降低CPU的使用率。

ps

显示10个消耗CPU最多的进程:

ps aux|sort -rnk +|head -

显示10个消耗内存最多的进程:

ps aux|sort -rnk +|head -

netstat

可以显示各种网络相关信息,比如各个连接的类型、状态等。

hello@ubuntu:~$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 ip6-localhost: ip6-localhost:ipp CLOSE_WAIT
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix [ ] DGRAM /dev/log
unix [ ] STREAM CONNECTED
unix [ ] STREAM CONNECTED @/tmp/dbus-EgyAIj0Ftz
unix [ ] STREAM CONNECTED
unix [ ] STREAM CONNECTED
unix [ ] STREAM CONNECTED /var/run/dbus/system_bus_socket

比如显示所有状态为“TIME_WAIT”的连接:

hello@ubuntu:~$ netstat -ae|grep "TIME_WAIT"

备注

实时监控时,可以用watch命令。

watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化。

比如实时显示网络流量:

hello@ubuntu:~$ watch -n  "/sbin/ifconfig eth0|grep bytes"

linux性能监控命令的更多相关文章

  1. linux性能监控命令(vmstat、sar、iostat、netstat)

    1.常用系统命令Vmstat.sar.iostat.netstat.free.ps.top等 2.常用组合方式• 用vmstat.sar.iostat检测是否是CPU瓶颈• 用free.vmstat检 ...

  2. Linux性能监控命令——sar

    介绍 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的 ...

  3. 【性能测试】Linux性能监控命令——sar详解

    转载:https://blog.csdn.net/mig_davidli/article/details/52149993 sar命令可以从文件的读写情况.系统调用的使用情况.磁盘I/O.CPU效率. ...

  4. Linux性能监控

    转自:http://blog.csdn.net/chosen0ne/article/details/8200737 linux性能监控,就是要监控系统的各个子系统是否正常.linux主要的子系统包括: ...

  5. Linux中监控命令top命令使用方法详解

    收集了两篇关于介绍Linux中监控命令top命令的详细使用方法的文章.总的来说,top命令主要用来查看Linux系统的各个进程和系统资源占用情况,在监控Linux系统性能方面top显得非常有用,下面就 ...

  6. [转载]你需要知道的 16 个 Linux 服务器监控命令

    转载自: 你需要知道的 16 个 Linux 服务器监控命令 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员. 有些 ...

  7. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  8. Linux 系统性能监控命令详解

    Linux 系统性能监控命令详解 CPU MEMORY IO NETWORK LINUX进程内存占用查看方法 系统负载过重时往往会引起其它子系统的问题,比如:->大量的读入内存的IO请求(pag ...

  9. 20个常用Linux性能监控工具/命令

    20个常用Linux性能监控工具/命令 对于 Linux/Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具.这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因 ...

随机推荐

  1. 高并发编程之ReentrantLock

    上文学习jvm提供的同步方法synchronized的用法,一些常见的业务类型以及一道以前阿里的面试题,从中学习到了一些并发编程的一些规则以及建议,本文主要学习jdk提供的同步方法reentrantL ...

  2. 「COCI2016/2017 Contest #2」Bruza

    「COCI2016/2017 Contest #2」Bruza 解题思路 : 首先对于任意时刻 \(i\) ,硬币一定移动到了深度为 \(i\) 的节点,所以第 \(i\) 时刻 Danel 一定染掉 ...

  3. [APIO2015]巴厘岛的雕塑 --- 贪心 + 枚举

    [APIO2015]巴厘岛的雕塑  题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有\(N\)座雕塑,为方便起见,我们把这些雕塑从 1 到\(N\)连续地进行 ...

  4. ThinkPHP -- 基础入门

      ThinkPHP文件结构说明: |——ThinkPHP.php    框架入口文件    |——Common            框架公共文件目录    |——Conf              ...

  5. 实用在线小工具 -- JS代码压缩工具

        实用在线小工具 -- JS代码压缩工具 将JS代码进行压缩可以减少内存占用,下面链接是一个在线JS代码压缩工具,它将多余的空格和换行符压缩了. JS代码压缩工具链接:http://jspack ...

  6. Codeforces Round #302 (Div. 2) B. Sea and Islands 构造

    B. Sea and Islands Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544/p ...

  7. leetcode 587. Erect the Fence 凸包的计算

    leetcode.587.Erect the Fence 凸包问题.好像是我在leetcode做的第一个凸包问题吧. 第一次做,涉及到的东西还是蛮多的.有一个东西很重要,就是已知一个点和一个矢量,求这 ...

  8. linux基础命令学习 (十一)系统管理命令

    stat              显示指定文件的详细信息,比ls更详细 who               显示在线登陆用户 whoami          显示当前操作用户 hostname   ...

  9. JAVA容器-重点总结与深度解析

    重点内容总结 问题思考 问题思考解析

  10. iOS学习之iOS沙盒(sandbox)机制和文件操作复习

    1.iOS沙盒机制 iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等. ...