1,监控CPU使用情况--uptime命令

该命令描述为:打印当前时间,系统已经运行了多久,当前登录用户数及系统平均负载

[study@monitor ~]$ uptime

 06:58:50 up 1 day, 10:41,  4 users,  load average: 0.06, 0.02, 0.00

系统当前时间为6:58:50,系统已经运行了1天10小时41分钟,当前有4个用户在登录,CPU负载分别显示最近的一分钟,五分钟,十五分钟的负载情况。这里CPU负载表示单位时间段内CPU等待队列中平均有多少进程在等待,等待的进程个数越多,说明CPU越忙

延伸 当前登录的用户

[study@monitor ~]$ who

root     tty7         2016-08-15 01:20 (:0)

root     pts/0        2016-08-15 01:21 (:0.0)

study    pts/1        2016-08-15 01:21 (172.19.17.16)

study    pts/2        2016-08-15 01:46 (172.19.17.16)

你的电脑默认有7个tty
你可以分别按住ctrl+alt+  ……F7
pts是你打命令的终端,叫伪终端

[root@monitor ~]# w  更强大的命令

 07:13:25 up 1 day, 10:56,  1 user,  load average: 0.00, 0.00, 0.00

USER     TTY      FROM          LOGIN@   IDLE   JCPU   PCPU WHAT

study    pts/2    172.19.17.16     01:46    0.00s  0.10s  0.05s sshd: study [priv]

2,监控内存及交换分区使用情况--free命令

显示系统内存及交换分区信息

free -b|k|m 输出单位 bytes,KB,MB  默认是Byte

[root@monitor ~]# free

          total       used      free     shared    buffers     cached

Mem:       1020348     823804     196544        0     135920     487716

-/+ buffers/cache:       200168     820180

Swap:       835576        0     835576

Mem一行的total代表内存总量为1020348Byte;used代表系统将内存中的823804Byte划分成了buffer和cache,也就是buffer和cache的总容量;free内存总容量减去buffer和cache的综合之后剩余容量为196544;buffers代表当前buffer的剩余容量为135920;cached表示当前cache的剩余容量为487716

第二行used代表buffer和cache当前总共使用了200168Byte;free代表buffer和cache总剩余容量加内存未被划分的剩余容量之和。也就是820180=196544+135920+487766;823804=135920+487716+200168

第三行为交换分区的使用情况,total代表交换分区总容量为835576Byte;used代表已经使用了0Byte,free代表剩余交换分区为835576Byte

3,监控磁盘使用情况--df命令

df命令描述:生成系统磁盘空间的使用量信息

df[选项]

选项 -h 人性化方式显示容量信息

 -i 显示磁盘incode使用量信息

 -T 显示文件系统类型

[study@monitor ~]$ df

Filesystem                   1K-blocks    Used    Available Use%  Mounted on

/dev/mapper/VolGroup-lv_root       6926264     4311212  2263208  66%    /

tmpfs                       510172      72     510100    1%    /dev/shm

/dev/sda1                     495844   34849      435395   8%    /boot

[study@monitor ~]$ df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root  6.7G  4.2G  2.2G  66% /

tmpfs                         499M   72K  499M   1% /dev/shm

/dev/sda1                     485M   35M  426M   8% /boot

[study@monitor ~]$ df -hT

Filesystem                   Type   Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root ext4   6.7G  4.2G  2.2G  66% /

tmpfs                        tmpfs  499M   72K  499M   1% /dev/shm

/dev/sda1                    ext4   485M   35M  426M   8% /boot

[study@monitor ~]$ df -i

Filesystem                   Inodes  IUsed  IFree IUse% Mounted on

/dev/mapper/VolGroup-lv_root      440640 130034 310606   30% /

tmpfs                        127543      3 127540    1% /dev/shm

/dev/sda1                    128016     38 127978    1% /boot

如最下的,根分区inodes总个数为440640,使用了130034个,剩余310606,使用率为1%,这里的inode个数决定了决定了该分区可以创建的文件个数,有多少个inode节点,就可以再该分区创建多少个文件,在上面看,如果/目录再创建310606个文件,即使系统显示磁盘空间仍然有大量的剩余,也无法再创建新的文件,因为inode已经耗尽

4,监控网络使用情况--ifconfig和netstat命令

4.1 ifconfig命令可以查看网卡接口信息,在Linux中以太网卡一般被标为ethx,第一块以太网卡为eth0,第二块以太网卡为eth1,依次类推。此外,我们一般使用netstat命令查看服务器开启的端口信息以及网络连接状态。

[study@monitor ~]$ ifconfig

eth0      Link encap:Ethernet  HWaddr 08:00:27:99:6F:0C  

          inet addr:172.19.17.100  Bcast:172.19.17.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe99:6f0c/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:180623 errors:0 dropped:0 overruns:0 frame:0

          TX packets:3234 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:12499524 (11.9 MiB)  TX bytes:1032437 (1008.2 KiB)

从以上信息中可以看出,该网卡的IP地址为172.19.17.100,广播地址为172.19.17.255,子网掩码为255.255.255.0,系统开机至现在共接收了384884个数据包;系统开机至现在总共发送了3234个数据包,系统总共接收了11.9MB的数据,发送了1008.2KB的数据

4.2 netstat命令

描述:打印网络连接、路由器、网络接口统计等信息

用法:netstat[选项]

选项:-s 显示各种协议数据统计信息

-n 使用数字形式的IP、端口号、用户ID替代主机、协议、用户等名称信息。

-p 显示进程名称及对应进程ID号

-l 仅显示正在监听的sockets接口信息

-u 查看udp连接信息

-t 查看tcp连接信息

Linux学习-性能监控_Linux

5,

5.1 ps命令

查看当前进程信息

标准语法格式:

ps -e   #查看所有进程信息

ps -ef  #全格式显示进程信息

BSD语法格式

ps -ax

ps -aux

例如:

[root@monitor ~]# ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 10:14 ?        00:00:00 /sbin/init

root         2     0  0 10:14 ?        00:00:00 [kthreadd]

5.2 top命令

动态查看进程信息

选项 -d #top刷新时间,默认为3秒

 -p #查看指定PID的进程信息

top -d 1 -p 1,2,3

通过top可以动态查看10个进程的信息,默认按CPU使用率排序,输入M可以按照内存使用率排序,输入N可以按照进程号排序,输入Z可以高亮显示颜色 


6,补充:

6.1 dmesg | tail

查看最后10条的系统消息,查找可能会引发性能问题的错误

6.2 vmstat 1

统计虚拟内存的信息,参数1是指打印一秒内的统计信息

Linux学习-性能监控_性能监控_02

r:运行队列的长度,可以更好地确定CPU的饱和度,'r'值大于CPU数则为饱和

free:以kb为单位的空闲内存。如果这个值很大,说明有足够的空闲内存

si,so:换入的内存和换出的内存。如果他们不为0,说明内存已经耗尽

us,sy,id,wa,st:CPU时间的不同组成部分,是所有CPU的平均数。分别表示用户态时间,系统态时间(内核)、空闲、等待I/O以及窃取时间(stolen time,虚拟化环境下,CPU在其它租户下的开销)

将用户态时间和系统态时间相加,可以判断CPU是否忙碌。如果一直有等待I/O,此时CPU是空闲的。可以将等待I/O看做另一种形式的CPU空闲。

I/O处理一定会消耗系统态时间。如果系统时间平均占比很高,比如说超过20%,或许可以深入研究下,可能是内核处理I/O的效率不高

6.3 mpstat -P ALL 1

Linux学习-性能监控_性能监控_03

打印每个CPU的状况。可以检查各CPU的负载是够均衡。比如,一个CPU很热,可能是单线程应用造成的


6.4 pidstat 1

Linux学习-性能监控_Linux_04

pidstat按进程打印CPU的使用情况。循环输出活动进程的信息。可用于观察模式随时间的变化情况。用户也可以把观察到的信息记录下来,以供分析研究。

%CPU这一列是所有CPU的整体情况,

6.5 iostat -xz 1

Linux学习-性能监控_性能监控_05

这是了解块设备的一个极佳工具,能看到实际负载和性能信息

r/s.w/s,rkB/s,wkB/s:分表表示每秒发给磁盘设备的读请求数,每秒发给磁盘设备的写请求数,每秒从磁盘设备读取的KB数,每秒向磁盘设备写入的KB数。可以使用它们表示负载特性。性能问题可能就是由过多的负载造成的。

await:平均I/O响应时间,单位为毫秒。包括排队时间和服务时间。如果它大于预期的平均时间,可能是设备以及饱和,也可能是设备存在问题

avgqu-sz:提交到设备的平均请求数。如果大于1,设备可能以及饱和。

%util:设备使用率。设备忙于处理请求的百分比。如果大于60%,通常会导致较差的性能(可以在await中看出来),不过也与具体的设备有关。如果接近100%,通常意味着设备以及饱和。


如果存储设备室后面有多快磁盘支撑的逻辑磁盘,即使设备使用率是100%,后端磁盘也可能远没有饱和,而是还能处理更多工作。


6.6 sar -n DEV 1

Linux学习-性能监控_性能监控_06

使用该工具检查网络接口的吞吐量,以rxkB/s和txkB/s为手段测量负载

6.7 sar -n TCP,ETCP 1

Linux学习-性能监控_Linux_07

这是一些关键TCP指标的总结。其中包括:


  • active/s:每秒本地发起的TCP连接数(比如通过connect())。

  • passive/s:每秒远端发起的TCP连接数(比如通过accept())。

  • retrans/s:每秒TCP重传数。


active和passive连接数通常用于粗略地测量服务器负载。方便起见,可以把active看作向外的连接,把passive看作向内的连接;不过也有不严格之处,比如考虑从localhost到localhost的连接。


重传数是网络或服务器问题的一个信号:可能是网络不可靠;也可能是服务器过载和丢包。像图中的例子,每秒只有一个新的TCP连接。