标签:
[~]$ uptime
13:24:46 up 207 days, 3:27, 2 users, load average: 1.45, 1.34, 1.33
system time:
系统当前时间13:24:46
system uptime:
系统运行时间207天3小时27分
users:
当前登入系统的用户数
load average:
过去的1分钟,5分钟,15分钟系统的负载情况,越小越好。
将单核CPU理解为一座桥,而系统中的任务看成一辆辆要过桥的汽车。当负载为1时,桥满负荷,汽车一个接一个有序过桥。若大于1,则形成拥堵,汽车需要排队过桥。
NOTE: N核CPU,满负荷运行,其load average = N。 —— UNDERSTANDING LINUX CPU LOAD
[~]$ free -m
total used free shared buffers cached
Mem: 59093 33708 25385 0 4683 23460
-/+ buffers/cache: 5564 53529
Swap: 2055 0 2055
Mem 物理内存
59093:
物理内存大小,单位MB。
33708:
已用物理内存量;包含buffers与cached。
25385:
剩余物理内存量。
0:
共享内存,弃用。
4683:
缓冲区大小
23460:
cache大小
buffers 与 cached 大小已经包含在used中,即已用内存中,划出一部分用于特殊用途。
-/+ buffers/cache
5564:
减去buffers与cache内存量,系统已使用内存量。5564 ≈ 33708
- 4683 - 23460
53529:
加上buffers与cache内存量,系统剩余内存量。 53529 ≈ 25385
+ 4683 + 23460
NOTE: buffers 与 cached 为临时空间,可以被系统自动释放。因而,只有第二行中,free量少时,才表明内存吃紧。
参考:Linux ate my ram!
Swap 磁盘上的虚拟内存
2055:
交换空间大小为2055MB
0:
已使用0MB
2055:
剩余2055MB
Buffer 与 Cache
- Buffer: 用于缓冲,快写慢,速度不匹配,存在数据积压现象,将数据丢在缓冲区,慢设备慢慢拿走数据。
- Cache:用于缓存,快读慢,由于速度不匹配,存在等待现象,将热数据存于缓存,加快访问速度。
监控CPU利用率
总览
[~]$ mpstat 1
Linux 2.6.32.57-tlinux_xenU-1.1.1-state (153_92) 03/19/16 _x86_64_ (8 CPU)
14:52:50 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
14:52:50 all 0.55 0.00 0.17 0.00 0.00 0.00 0.00 0.00 99.27
usr:
用户空间CPU使用占比
sys:
内核空间CPU使用占比
nice:
低优先级进程使用CPU占比。nice值大于0。
iowait:
CPU等待IO占比
irq:
CPU处理硬中断占比
soft:
CPU处理软中断占比
idle:
CPU空闲时间占比
guest
与steal
与虚拟机有关,暂不涉及。
NOTE: 如果存在nice值大于0的进程,%nice才会有百分比。nice值[-20 ~ 19], nice为19,进程优先级最低。
调整方法:renice -n nice_val -p pid
查看某个
[~]$ mpstat -P 0
Linux 2.6.32.57-tlinux_xenU-1.1.1-state (153_92) 03/19/16 _x86_64_ (8 CPU)
14:55:17 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
14:55:17 0 0.82 0.00 0.18 0.00 0.00 0.00 0.00 0.00 98.99
NOTE: 查看全部CPU Core:
-P ALL
持续打印
#每两秒打印一次
mpstat 2
#每两秒打印一次,共打印5次
mpstat 2 5
注意:
使用mpstat,通常加上时间间隔,否则打印是系统启动到统计点时的CPU状况。
top 命令包含了uptime,free,mpstat,总览系统各种参数。
top - 15:29:53 up 645 days, 2:15, 4 users, load average: 0.37, 0.40, 0.37
Tasks: 221 total, 1 running, 220 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.5%us, 0.2%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 60511924k total, 26581256k used, 33930668k free, 2937116k buffers
Swap: 2104504k total, 3060k used, 2101444k free, 18262296k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
30032 root 20 0 42772 24m 888 S 9.9 0.0 1481:52 sap1005
2895 root 20 0 27432 15m 1268 S 0.7 0.0 640:22.07 safe_TsysAgent.
简述:
221:
进程总数 。 1:
运行进程数目。正在运行和等待运行的进程,教科书上的:就绪态与运行态。 220:
阻塞进程数目。等待IO或者调用sleep函数。 0:
停止状态进程数目。收到STOP信号后获得停止状态,收到CONT信号,失去STOP状态;ctrl+z发送STOP信号。 0:
僵尸进程数目。子进程已死,但没有被父进程回收,僵尸。列表标题
PID: 进程标识符
USER: 进程拥有者
PR: 进程优先权 [数越小,进程优先级越高]
NI: NICE Value [PR = PR + NI,因此,NI为负数,PR小,优先级高;NI可以手动调整]
VIRT: 进程虚拟内存大小 [进程总得寻址空间大小]
RES: 进程实际占用物理内存大小
SHR: 共享内存大小,比如动态链接库
S: 进程状态
CPU: 进程CPU占用率
MEM: 进程内存占用率
TIME+: 进程运行占用的CPU时间
COMMAND: 启动进程的命令
VIRT vs RES vs SHR
RES 进程实际占用物理内存大小,与%MEM
强相关。SHR 可以其他进程共享的内存空间。比如,依赖一个C公共库,那么整个库的地址空间被加入VIRT
,而被载入内存的公共库函数被算入RES
与SHR
。
系统IO性能检测利器
# -d 取消显示CPU信息,-x 显示扩展信息
[~] iostat -d -x 2
Linux 2.6.32.43-tlinux-1.0.10-default 03/23/16 _x86_64_ (24 CPU)
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 20.50 0.00 4.00 0.00 196.00 49.00 0.04 10.50 10.00 4.00
sdb 0.00 12194.00 0.00 93.00 0.00 91644.00 985.42 143.00 2231.66 10.75 100.00
sdc 0.00 3480.00 0.50 85.50 4.00 20900.00 243.07 49.79 380.53 10.12 87.00
rrqm/s
and wrqm/s
每秒合并读写请求数。简单的说,就是合并读写请求,临近的扇区,一起读写。
rsec/s
and wsec/s
设备每秒读写扇区数。
r/s
and w/s
每秒向该设备提出的读写请求次数,该数据为合并读写请求后的数据。
avgrq-sz
每个请求的平均读写扇区数。 avgrp-sz
= (rsec/s + wsec/s) / (r/s + w/s)
avgqu-sz
平均队列长度
svctm
设备处理请求的平均时间(ms)。指的是读写请求脱离linux内核调度,进入设备读写阶段所耗时间。
await
IO请求的平均响应时间。await = svctm
+ quitm (等于 设备处理时间 + 队列等待时间)
util
可以简单的理解为:单位时间内,设备繁忙比。比如,10秒钟,有6秒在进行读写,则util
= 60%
。
计算公式:util = 单位时间内读写次数 * 每次平均读写时间 * 100% = ( r + w ) * ( svctm / 1000 ) * 100%
await
- svctm
获得。磁盘性能不佳:svctm高,await高;内核IO调度不佳:await高,svctm低
注意
iostat
直接查看,iostat显示系统开机到当前统计点的平均,没有参考价值iostat -d -x 2
即加上统计间隔,统计时间间隔内的数据await
与svctm
差别过大,则IO成为瓶颈参考
查看系统网络连接
查看监听套接字 -a
#默认不显示监听套接字
netstat -a
禁止dns查找 -n
#netstat默认通过dns查找,将ip映射成主机名,速度慢
netstat -an
查看套接字所属进程pid -p
[~]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
PID/Program name
tcp 0 0 x.x:56000 0.0.0.0:* LISTEN 25310/sshd
指定协议
-t:
tcp
-u:
udp
[~]# netstat -anu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 x.x:46469 0.0.0.0:*
Recv-Q: 套接字收到数据放到缓冲区中,还没有被进程读走
Send-Q: 进程将数据写入缓冲区,还没有发送出去
NOTE: 通常Recv-Q与Send-Q都为0,如果二者一直不为0,则需要进行排查。
spch2008@ubuntu:~$ netstat -anp | grep server
Active Internet connections (servers and established)
tcp 0 0 127.0.0.1:8989 0.0.0.0:* LISTEN 1277/server
tcp 65 0 127.0.0.1:8989 127.0.0.1:55785 ESTABLISHED 1278/server
client 不停的向server发送数据,而server一直阻塞不读取client发送的数据,导致数据在server缓冲区中积压。
[root@153_92 /data/chengsun/code/mpstat]# vmstat -S m 2
procs -----------memory---------- ---swap-- -----io---- --system-- ------cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 3 34714 3007 18715 0 0 0 5 0 0 1 0 99 0 0
procs
r:
等待运行的进程数目,即run queue中进程数。
b:
阻塞状态的进程数目。
Run queue: 就绪态进程,进程调度器从
run queue
取进程运行。
memory
swpd:
交换空间使用量
free:
物理内存可用量
buff:
buffer使用内存大小
cache:
cache使用内存大小
free命令进行详细查看
swap
si:
每秒从交换空间移到物理内存的数据量。
so:
每秒从物理内存移到交换空间的数据量。
如果
si
与so
过大,则说明内存成为了瓶颈。数据不停的在内存与交换空间移动。
io
bi:
每秒从块设备读入的数据量
bo:
每秒向块设备写入的数据量
NOTE: 网卡与硬盘都属于块设备。
system
in:
每秒中断数。
cs:
每秒上下文切换次数。进程过多,此值较大。
如果IO中
bi
或者bo
过大,则in
也会过高,因为CPU通过中断来获取IO读写通知。
cpu
us:
用户空间CPU耗时百分比
sy:
内核空间CPU耗时百分比
id:
CPU空闲时间耗时百分比
wa:
CPU等待IO耗时百分比
st:
虚拟机相关,忽略
NOTE: 同mpstat。
指定接口 -i
# 默认监听eth0
tcpdump -i eth1
# 关闭dns解析
tcpdump -n -i eth1
指定协议
tcpdump -n -i eth1 tcp
支持协议有:tcp,udp,icmp,ip等
指定端口
tcpdump -n -i eth1 port 36000
指定ip
#src
tcpdump -n -i eth1 src x.x.x.x
#dst
tcpdump -n -i eth1 dst x.x.x.x
显示mac地址-e
tcpdump -n -i eth1 -e
且:&&
or and
或:||
or or
非:!
#指定源ip与目的端口
tcpdump -n -i eth1 "src host 10.4.83.17 && dst port 36000"
#指定ip与协议
tcpdump -n -i eth1 "src host 10.4.83.17 and tcp"
#排除tcp协议
tcpdump -n -i eth1 "src 10.4.83.17 and ! tcp"
#指定mac地址
详细过滤参数TCPDUMP filters
-A:
ASCII 方式显示
-XX:
十六进制与ASCII方式显示
[~]# tcpdump -i eth1 -n -XX
0x0000: 0009 0f09 0002 0016 3ea5 8e79 0800 4500 ........>..y..E.
0x0010: 0b6c f20d 4000 4006 6fec 0a01 995c 0aaa .l..@.@.o....\..
0x0020: 1f8b dd93 2704 a349 18b5 baa0 debc 8010 ....‘..I........
NOTE: tcpdump默认捕获每个包的前68个字节,如果需要调整,通过参数
-s
指定。-s0
代表捕获全部包内容。
-w:
捕获内容写入文件
-r:
解析捕获文件内容
# 捕获
tcpdump -i eth1 -n -w net.packet
# 解析
tcpdump -n -r net.packet
[#]# tcpdump -n -i eth1
18:38:01.452434 IP 1.1.1.2.49347 > 1.1.1.8.etlservicemgr: Flags [S], seq 2981118633, win 14600, options [mss 1460,sackOK,TS val 1073478406 ecr 0,nop,wscale 7], length 0
18:38:01.457968 IP 1.1.1.6.webcache > 1.1.1.2.52794: Flags [.], ack 2109036236, win 14, options [nop,nop,TS val 1484369469 ecr 1073478397], length 0
Flags
[S] - SYN (Start Connection)
[.] - No Flag Set
[P] - PSH (Push Data)
[F] - FIN (Finish Connection)
[R] - RST (Reset Connection)
标签:
原文地址:http://blog.csdn.net/spch2008/article/details/51375314