10.6 监控io性能
磁盘状态命令
iostat -x 磁盘使用 安装sysstat的时候会同时安装iostat
直接运行iostat
主要用 iostat -x选项来查看
主要看的是上图的 %util 表示磁盘使用有多少时间占用cpu的 时间比。
持续处于高数值,说明磁盘的io不足
iotop 磁盘使用 查看进程的io使用量
10.7 free命令
free 查看内存使用情况
第一行说明 第二行 内存使用情况,第三行 交换分区使用情况
主要关注第二行。 total 总大小 used 使用中 free 剩余 shared 共享的
free -m -g -h 选项单位
buffer与cache 区别
buffer=缓冲,cache=缓存 linux会把内存分配一部分出来给 buff cache
available free加上预分配的buff/cache 还没用完的
磁盘数据经过内存到cpu处理 ,在经过内存的步骤就是缓存
cpu处理好的数据经过内存在返回到磁盘,在经过内存的步骤就是缓冲
公式: total总大小=used+free+buff/cache
avaliable包含free和buffer/cache剩余部分
10.8 ps命令
ps 查看系统进程
把你当前进程快照给打印出来
用法:ps aux ,ps -elf
ps aux ps -elf把当前所有进程都打印出来
可以通过管道符 |grep 查找指定的进程
/proc/ 目录下 存储的是 pid 目录。
STAT状态说明
D 不能中断的进程
R run状态的进程 时间段内在使用cpu
S sleep状态的进程 暂时休眠的进程
T 暂停的进程
Z 僵尸进程
<高优先级进程 cpu会先把<状态的进程 先处理运行
N 低优先级进程
L 内存中被锁了内存分页
s 主进程
I 多线程进程
+ 前台进程
线程是由大的进程组成,一个进程里面有多个线程
进程与进程之间内存是不共享的,线程是使用同一个进程内存的区域
10.9 查看网络状态
linux 作为服务器的操作系统,会有很多服务,服务都是跟客户端相互通信的,意味着它要有监听端口,对外通信的端口 ,而netstat 查看的就是 TCP/IP 通信的状态
比如要给系统安装服务,有了这服务就要有个监听端口,正常一台机器是没有监听端口的
监听端口:正常情况下
netstat 查看网络状态
netstat -lnp 查看监听端口
socket 进程之间的通信,前提是同一台服务器
netstat -an 查看系统的网络连接状况 会查看 TCP ip状态
netstat -ltnp 只看出tcp的,不包含socket
-ltunp 只查看查看 udp tcp
ss -an 和nestat异曲同工 但是不会显示进程的名字
分享小技巧
netstat -an | awk '/^tcp/{++sta[$NF]}END{for(key in sta)print key,"\t:,sta[key]}
可以查看网络连接状态的数量
主要关注 ESTABLISHED 通常1000以内。
服务器并发连接数:同一时刻有多少个客户端连接服务器。
TCP/IP的三次握手,四次挥手。
10.10 Linux下抓包
抓包工具 tcpdump
用法:
tcpdump -nn 主要看数据的流向
-nn :第一个n表示你的ip用数字的显示出来不加显示主机名
最后一个数字是端口
tcpdump -nn -i ens33 -i 指定网卡的名字
tcpdump -nn port 80 指定端口
tcpdump -nn not port 22and host 192.168.0.100 排除法,命令表达 :不需要22端口的,只要192.168.0.100的包
tcpdump -nn -c 100 -w 1.cap -c 指定抓取数量的数据包,-w 存到指定的文件里去
tcpdump -r 读取保存的保存的数据包文件
file 文件名。 可以查看文件的相关信息
使用tshark 要先安装
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"
可以查看指定网卡 端口访问的情况
时间, ip,访问的域名,访问的链接
DDos攻击 叫 udp flood