监控io性能
[root@localhost ~]# iostat
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.11 0.00 0.23 0.01 0.00 99.66
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.61 19.24 1.76 124103 11353
sdb 0.07 0.53 0.00 3407 4
scd0 0.00 0.01 0.00 44 0
dm-0 0.01 0.07 0.00 456 0
[root@localhost ~]#
-
iostat -x
[root@localhost ~]# iostat -x
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.10 0.00 0.23 0.01 0.00 99.66
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.00 0.02 1.11 0.42 18.29 1.68 26.04 0.00 0.37 0.34 0.44 0.27 0.04
sdb 0.00 0.00 0.07 0.00 0.50 0.00 14.30 0.00 0.09 0.09 1.00 0.08 0.00
scd0 0.00 0.00 0.00 0.00 0.01 0.00 8.00 0.00 0.45 0.45 0.00 0.45 0.00
dm-0 0.00 0.00 0.01 0.00 0.07 0.00 15.20 0.00 0.08 0.08 0.00 0.07 0.00
[root@localhost ~]#
着重看%util列,如果数值很大,说明读写很忙。如果读写不大,说明硬盘有问题。
-
iotop 来查看占用IO高的进程
没有安装过:yum install -y iotop
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2434 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.03 % [kworker/0:2]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 21
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
6 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u256:0]
7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
8 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_bh]
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
10 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]
12 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper]
13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs]
14 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns]
15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd]
16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback]
17 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kintegrityd]
18 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bioset]
19 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kblockd]
20 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [md]
533 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % vmtoolsd
534 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd-logind
26 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kswapd0]
27 be/5 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksmd]
28 be/7 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khugepaged]
29 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [fsnotify_mark]
30 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto]
545 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % agetty --noclear tty1 linux
548 be/4 polkitd 0.00 B/s 0.00 B/s 0.00 % 0.00 % polkitd --no-debug [gmain]
38 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthrotld]
39 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u256:1]
40 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kmpath_rdacd]
41 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kpsmoused]
free命令
直接查看内存使用的命令
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 999936 121540 581256 6844 297140 693540
Swap: 2097148 0 2097148
[root@localhost ~]#
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 976M 118M 567M 6.7M 290M 677M
Swap: 2.0G 0B 2.0G
[root@localhost ~]#
buff/cache缓冲/缓存,缓存,是cpu向硬盘读取数据的时候,缓存(cache)在内存里。缓冲是:cpu处理完的数据写入磁盘,缓冲(buff)在内存里面。
公式:total=used + free + buff/cache
avaliable包含free和buffer/cache剩余部分。
ps命令
-
ps aux
静态显示所有的进程
-
ps aux |grep nginx
查看某一个进程
[root@localhost ~]# ps aux |grep nginx
root 2757 0.0 0.0 112664 968 pts/0 R+ 20:57 0:00 grep --color=auto nginx
[root@localhost ~]#
PID :进程ID,用于杀掉一个进程,kill 2757
查看一个进程:ls -l /proc/505/
-
ps aux 后关注STAT列
D不能中断的进程
R run状态的进程
S sleep状态的进程
T 暂停的进程
Z 僵尸进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程
l 多线程进程
+ 前台进程
-
ps -elf
和ps aux 差不多。
netstat 查看网络状态
-
netstat -lnp 查看监听端口
[root@localhost ~]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 887/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1494/master
tcp6 0 0 :::22 :::* LISTEN 887/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1494/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 542/chronyd
udp6 0 0 ::1:323 :::* 542/chronyd
raw6 0 0 :::58 :::* 7 581/NetworkManager
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 12552 1/systemd /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 12561 1/systemd /run/lvm/lvmpolld.socket
unix 2 [ ACC ] STREAM LISTENING 19948 1494/master private/bounce
unix 2 [ ACC ] STREAM LISTENING 19951 1494/master private/defer
-
netstat -an
-
netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
[root@localhost ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
LISTEN 4
ESTABLISHED 1
主要看ESTABLISHED,这个数字大,说明系统忙。网站并发连接数,就是同一时刻有多少个客户端连着。
linux 下抓包
-
抓包工具tcpdump
没有这个命令需要安装一下:yum install -y tcpdump
指定网卡名字 tcpdump -nn -i ens33
运行完上面命令后会出现密密麻麻的一堆字符串,在按Ctrl+c 之前,这些字符串一直在刷屏,刷屏越快说明网卡上的数据包越多。我们只需要关注第3列和第4列,它们显示的信息为哪一个ip+端口号在连接哪一个ip+端口号。
-nn选项的作用是让第3列和第4列显示成"ip+端口号"的形式,如果不加-nn选项则显示“主机名+服务名称” -i 选项后面跟设备名称。
tcpdump -nn -i ens33 port 22 指定只抓22端口的包
tcpdump -nn -i ens33 tcp and not port 22 指定抓tcp的包,但是不要22端口的
tcpdump -nn -i ens33 port 22 and port 53 只抓22和53 端口的包。
tcpdump -nn -i ens33 -c 100 只抓100条
tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap 抓100条然后保存到/tmp/1.cap
tcpdump -r /tmp/1.cap 查看这个抓取的数据包。
-
抓包工具 wireshark
yum install -y wireshark
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"