Linux系统出现了性能问题,通常咱们能够经过top.iostat,vmstat等命令来查看初步定位问题。其中iostat能够给咱们提供丰富的IO状态数据linux
[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 ios
[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)tcp
IO从大到小排列性能
单位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 总共内存spa
used 已使用线程
free 剩余code
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 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
经过pid能够杀死进程,也可查看进程目录 ls -l /proc/12/
用法相对较多的是查看某个进程使用情况
netstat -lnp查看监听端口
查看连接情况,ESTABLISHED正在链接的进程
使用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访问的什么网站连接