系统状态信息查看
top (服务器进程,负载,cpu,内存情况)
参数 | 解析 |
---|---|
load average: 1.15, 1.42, 1.44 | 1,5,15分钟负载情况,一般参数为cpu内核数的1-1.5倍以上应关注 |
1 running, 559 sleeping, 0 stopped, 0 zombie | 正在运行、睡眠、停止、僵尸进程的数量,关注僵尸进程的数量 |
%sys | 系统占用CPU百分比 |
id | CPU空闲率,越接近100%越好 |
top -c | 完整的进程命令显示 |
top -bn1 | 打印当前的top 进程 |
数字1 | 显示各个cpu的情况及个数 |
shift +m | 内存占用排行 |
shift +p | cpu占用排行 |
top -bn1 | bn1显示所有进程信息,top -n 1 只显示一屏信息,供管道调用 |
vmstat(进程,磁盘,cpu,内存情况)
参数 | 解析 |
---|---|
r | 表示多少个进程分配给cpu 一般和cpu个数一起参考,超过CPU的个数就有瓶颈 |
b | 阻塞的进程,进程阻塞 |
swpd | 虚拟内存已使用的大小,如果大于0,表示机器物理内存不足,可能需要机器内存不足 |
free | 空闲的空间 |
buff | 存储系统中目录,权限等缓存 |
cache | 用来记忆我们打开的文件,给文件做缓冲 |
si | 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露 |
so | 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上 |
bi | 设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte |
bo | 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整 |
in | 每秒CPU的中断次数,包括时间中断 |
cs | 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好 |
us | 用户CPU时间 |
sy | 系统CPU时间 |
id | 空闲 CPU时间 id+us +sy =100 |
wt | io等待磁盘写进去 |
mpstat(单个CPU情况)
参数 | 解析 |
---|---|
mpstat -P ALL | 查看所有CPU的平均情况 |
mpstat -P 2 | 查看指定CPU的情况 |
pidstat(单个进程的情况)
yum install -y sysstat
参数 | 解析 |
---|---|
pidstat -d -p 3679 | kB_rd/s - 任务从硬盘上的读取速度(kb) |
pidstat -r -p 3679 | minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。 |
pidstat -r 2 5 | 该命令比较容易定为出问题的进程 |
pidstat -urd -h | 统计所有数据一起打印出来 |
pidstat -w -p 3679 | Cswch/s - 每秒主动任务上下文切换数量 |
iostat (磁盘情况)
参数 | 解析 |
---|---|
iostat -d -k 2 5 | -d 表示显示设备磁盘的使用状态 -k 表示强制使用kilobytes为单位,如果是-m ,则是M 2 每2秒刷新 6 刷新6次 |
tps | 一次I/O请求 |
kB_read/s | 每秒从设备(drive expressed)读取的数据量 |
kB_wrtn/s | 每秒向设备(drive expressed)写入的数据量 |
kB_wrtn | 写入的总数量数据量 |
kB_wrtn | 写入的总数量数据量 |
iostat -c 2 5 | 类似mpstat -P ALL 命令,查看cpu 统计信息 |
iostat -d -x -k 2 5 | 多了-x 参数,用于显示磁盘io的更多信息 |
free(内存情况)
参数 | 解析 |
---|---|
Mem | 内存的使用情况 |
Swap | 交换空间 |
total | 系统总共可用的物理内存和交换空间大小 |
used | 已使用的物理内存和交换空间 |
free | 还有多少物理内存和交换空间 |
shared | 被共享的物理内存大小 |
buff/cache | 显示被buffer和cache使用的物理内存 |
available | availble = free +buffer +cache |
sar (找出系统的瓶颈)
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
参数 | 解析 |
---|---|
sar -f /var/log/sa/saxx (追溯系统中xx天的系统运行情况) |
指定时间段s(start),e(end) sar -f /var/log/sa/saxx -s 00:00:00 -e 23:00:00 -r |
sar -u (CPU资源,磁盘IO) |
%user - 用户模式下消耗的CPU时间的比例 |
sar -q (系统平均负载) |
runq-sz - 运行队列的长度(等待运行的进程数) |
sar -r (内存和交换空间) |
kbmemfree - 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间 |
sar -W (查看页面交换发生状况) |
pswpin/s - 每秒系统换入的交换页面(swap page)数量 |
sar -v 10 3 (每10秒采样一次,连续采样3次,观察核心表状态) |
dentunusd - 目录高速缓存中未被使用的条目数量
|
sar -n SOCK 1 3 (针对socket进行汇报)
|
totsck - 被使用的socket的总数目 |
sar -n EDEV 1 3 (网络数据包使用情况,EDEV失败的情况,DEV正确的情况) |
rxerr/s - 每秒钟接收到的损坏的包的数目 |
iftop(网卡流量)
参数 | 解析 |
---|---|
iftop -F 10.0.0.2/32 | 查看某个ip的出入网卡的流量 |
L |
流量刻度显示 |
依次输入3 → t → B |
3 根据最近40s统计排序 t 发送和接收合并一行 B 分别查看最近2s 10s 和40s的统计 |
<= | 接收数据 |
=> | 发送数据 |
netstat(端口相关)
参数 | 解析 |
---|---|
netstat -lntp | 服务器中运行的端口情况 |
netstat -ie | 输出和ifconfig信息一样 |
netstat -s | 列出所有端口的统计信息 加上(-t和-u)对应tcp和udp |
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn | 网络连接状态汇总 |
lsof(当前系统打开文件的工具)
参数 | 解析 |
---|---|
lsof | 列出系统中打开的文件 |
lsof -u xxxx -c nginx | 列出xxxx用户的nginx进程打开文件的信息 |
lsof -p xxx | 进程号xxx打开文件的信息 |
lsof -i :80 | 打开80端口的信息 |
lsof +d /usr/local | 显示目录下被进程开启的文件 |
lsof +D /usr/local | 同上,目录下的目录会被找 |
lsof -g gid | 显示进程归属gid的进程情况 |
find(查找文件)
参数 | 解析 |
---|---|
find /data/logs/xxx/ -type f -mtime +3 -iname "*.log" | 找出3天前/data/logs/xxx/ 目录中为*.log 的文件 |
find /data/logs/xxx/ -type f -iname "*.log" -exec rm -f {}\; | 找出3天前/data/logs/xxx/ 目录中为*.log 的文件并删除 |