iostat查看硬盘详细信息:
Linux系统出现了性能问题,一般我们可以通过top.iostat,vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据
[root@glinux-01 ~]# iostat
Linux 3.10.0-693.el7.x86_64 (glinux-01) 2018年03月15日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.19 0.00 0.36 0.06 0.00 99.39
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.66 12.31 12.51 202336 205754
sdb 0.02 0.22 0.00 3580 0
dm-0 0.00 0.06 0.00 1036 0
iostat -x
[root@glinux-01 ~]# iostat -x
Linux 3.10.0-693.el7.x86_64 (glinux-01) 2018年03月15日 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.18 0.00 0.36 0.06 0.00 99.40
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.03 0.37 0.27 11.74 12.11 73.93 0.01 15.79
10.55 22.91 2.96 0.19
sdb 0.00 0.00 0.01 0.00 0.21 0.00 28.99 0.00 0.43
0.43 0.00 0.28 0.00
dm-0 0.00 0.00 0.00 0.00 0.06 0.00 48.19 0.00 0.28
0.28 0.00 0.23 0.00
参数含义(重要参数%util)
rrqm/s:每秒进行merge的读操作数目。即delta(rmerge)/s
wrqm/s:每秒进行merge的写操作数目。即delta(wmerge)/s
r/s:每秒完成的读I/O设备次数。即delta(rio)/s
w/s:每秒完成的写I/0设备次数。即delta(wio)/s
rsec/s:每秒读扇区数。即delta(rsect)/s
wsec/s:每秒写扇区数。即delta(wsect)/s
rKB/s:每秒读K字节数。是rsec/s的一半,因为每扇区大小为512字节
wKB/s:每秒写K字节数。是wsec/s的一半
avgrq-sz:平均每次设备I/O操作的数据大小(扇区)。即delta(rsect+wsect)/delta(rio+wio)
avgqu-sz:平均I/O队列长度。即delta(aveq)/s/1000(因为aveq的单位为毫秒)
await:平均每次设备I/O操作的等待时间(毫秒)。即delta(ruse+wuse)/delta(rio+wio)
svctm:平均每次设备I/O操作的服务时间(毫秒)。即delta(use)/delta(rio+wio)
%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的
。即delta(usr)/s/1000(因为use的单位为毫秒)
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负载,该磁盘可能存在瓶颈。
当发现磁盘io很忙,想查看哪个进程频繁读写,可以用iotop
(如未安装,先yum install -y intop)
IO从大到小排列
free 查看内存使用情况
单位kb(free为0了,就是内存有问题了)
[root@glinux-01 ~]# free
total used free shared buff/cache available
Mem: 750104 126872 478088 5268 145144 474424
Swap: 2097148 0 2097148
total 总共内存
used 已使用
free 剩余
buff 缓冲cache 快取 (系统预留一部分内存给buff/cache)
available 剩余的+buff/cache没用完的
数据(磁盘)---内存(cache)----cpu 读数据read cache
cpu(处理过的数据)---内存(buffer)----磁盘 写数据 write buff
free -m 以M为单位显示内存
[root@glinux-01 ~]# free -m
total used free shared buff/cache available
Mem: 732 123 466 5 141 463
Swap: 2047 0 2047
ps命令(查看系统进程使用状况)
ps aux 静态查看。 top是动态查看
[root@g_linux01 ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128164 6824 ? Ss 3月18 0:13 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 3月18 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 3月18 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 3月18 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 3月18 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 3月18 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 3月18 0:02 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 3月18 0:01 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 3月18 0:00 [kdevtmpfs
- %cpu cpu使用百分比
- %mem 内存使用百分比
- vsz 虚拟内存使用百分比
- rss 物理内存
- stat 状态说明如下
- D 不能中断的进程
- R run状态的进程
- S sleep状态的进程
- T暂停的进程
- Z僵尸进程
- <高优先级进程
- N低优先级进程
- L内存中被锁了内存分页
- s主进程
- l多线程进程
- +前台进程
通过pid可以杀死进程,也可查看进程目录 ls -l /proc/12/
用法相对较多的是查看某个进程使用状况
查看网络状态netstat
netstat -lnp查看监听端口
查看链接状况,ESTABLISHED正在连接的进程
linux 抓包
使用tcpdump命令。如未安装先yum install -y tcpdump
tcpdump -nn -i ens33(-i 指定网卡的名字)
-nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名。
19:56:22.470376 IP 192.168.244.128.22 > 192.168.244.1.50832:
Flags [P.], seq 4910988:4911280, ack 729, win 296, length 292
系统时间 来源主机.端口 > 目标主机.端口 数据包参数
指定抓包的端口号
[root@glinux-01 ~]# tcpdump -nn -i ens33 port 22
-c 指定抓取包的数量 -w将输出写入文件中
tcpdump -nn -i ens33 -c 10 -w /tmp/1.cap
查看1.cap文件
[root@glinux-01 ~]# tcpdump -r /tmp/1.cap
yum install -y wireshark
tshark 命令 查看网卡 什么ip访问的什么网站链接