w/uptime 查看系统负载
以上图片信息为:首次登陆时间,上线时长,几个用户,系统负载:1 5 15分钟之内系统的平均负载
我们如何判断负载过高呢,那就需要看我们的CPU核数,以下命令可以查看:
cat /proc/cpuinfo 系统CPU情况
红色的框就是CPU核数.
load average 的含义
平均负载(load average)是指系统的运行队列的平均利用率,也可以认为是可运行进程的平均数。
以路况为例, 单核CPU、单车道 情况如下:
- 0.00-1.00 之间的数字表示此时路况非常良好,没有拥堵,车辆可以毫无阻碍地通过。
- 1.00 表示道路还算正常,但有可能会恶化并造成拥堵。此时系统已经没有多余的资源了,管理员需要进行优化。
- 1.00-*** 表示路况不太好了,如果到达2.00表示有桥上车辆一倍数目的车辆正在等待。这种情况你必须进行检查了。
多核CPU - 多车道 情况如下:
多核CPU的话,满负荷状态的数字为 "1.00 * CPU核数",即双核CPU为2.00,四核CPU为4.00。
一般的进程需要消耗CPU、内存、磁盘I/O、网络I/O等资源,在这种情况下,平均负载就不是单独指的CPU使用情况。即内存、磁盘、网络等因素也可以影响系统的平均负载值。
在单核处理器中,平均负载值为1或者小于1的时候,系统处理进程会非常轻松,即负载很低。当达到3的时候,就会显得很忙,达到5或者8的时候就不能很好的处理进程了(其中5和8目前还是个争议的阈值,为了保守起见,建议选择低的)。
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存 交换情况,IO读写情况
vmstat 1 1秒钟显示一次
vmstat 1 5 一共显示5次
项目 | 含义 | 说明 |
r | 等待执行的任务数 | 展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。 |
B | 等待IO的进程数量 |
|
swpd | 正在使用虚拟的内存大小,单位k |
|
free | 空闲内存大小 |
|
buff | 已用的buff大小,对块设备的读写进行缓冲 |
|
cache | 已用的cache大小,文件系统的cache |
|
inact | 非活跃内存大小,即被标明可回收的内存,区别于free和active | 具体含义见:概念补充(当使用-a选项时显示) |
active | 活跃的内存大小 | 具体含义见:概念补充(当使用-a选项时显示) |
si | 每秒从交换区写入内存的大小(单位:kb/s) |
|
so | 每秒从内存写到交换区的大小 |
|
bi | 每秒读取的块数(读磁盘) | 现在的Linux版本块的大小为1024bytes |
bo | 每秒写入的块数(写磁盘) |
|
in | 每秒中断数,包括时钟中断 | 这两个值越大,会看到由内核消耗的cpu时间会越多 |
cs | 每秒上下文切换数 | |
Us | 用户进程执行消耗cpu时间(user time) | us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了 |
Sy | 系统进程消耗cpu时间(system time) | sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。 |
Id | 空闲时间(包括IO等待时间) |
|
wa | 等待IO时间 | Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。 |
top 动态查看负载
shift+m 以MEN排序
q 退出
PR+NI =20 进程的优先级(PR0~39,NI-20~19)
VIRT 虚拟内存
RES 物理内存
SHR 共享内存
S 进程状态
%MEM 内存使用情况
top -bn1 一次显示完(可以写进脚本里面)
top -d 1 -c一秒显示一次(默认是3秒)
sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
在命令行中,n 和t 两个参数组合起来定义采样间隔和次数,t为采样间隔,是必须有
的参数,n为采样次数,是可选的,默认值是1,-o file表示将命令结果以二进制格式
存放在文件中,file 在此处不是关键字,是文件名。
-A:所有报告的总和
-b:显示I/O和传递速率的统计信息
-B:显示换页状态
-d:输出每一块磁盘的使用信息
-e:设置显示报告的结束时间
-f:从制定的文件读取报告
-i:设置状态信息刷新的间隔时间
-P:报告每个CPU的状态
-R:显示内存状态
–u:输出cpu使用情况和统计信息
–v:显示索引节点、文件和其他内核表的状态
-w:显示交换分区的状态
-x:显示给定进程的装
-r:报告内存利用率的统计信息
安装:yum install -y sysstat
sar -n DEV 查看网卡流量
sar -n DEV -f /var/log/sa/sa10 查看指定网卡流量
sar -q 1 10 查看历史负载
sar -b 1 5查看磁盘,主要看读和写
/var/log/sa/sar10 是可以直接查看的
nload 监控网卡流量
安装:
yum install -y epel-release
yum install -y nload
直接执行:nload
左右键可以切换网卡。
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
每部分都有当前流量(Curr),
平均流量(Avg),
最小流量(Min),
最大流量(Max),
总和流量(Ttl)这几个部分,看起来还是蛮直观的。
iostat -x 磁盘使用
%util 等待时间占比,过大说明磁盘不够用了,100%表示设备已经接近满负荷运行了。
iotop 磁盘使用 (进程),类似top。
安装:yum install -y iotop
free 查看内存情况
默认单位为k
-m 兆为单位
-g G为单位
buffers 数据将要写到磁盘里去的空间(缓冲)
cached 磁盘取出来放到内存的空间(缓存)
公式:total=used+free+buff/cache
avaliable包含free和buffer/cache剩余部分
ps 查看进程
用法:ps aux、ps -elf
STAT部分说明
D 不能中断的进程
R run状态的进程
S sleep状态的进程
T 暂停的进程
Z 僵尸进程
< 高优先级进程
N 低优先级进程
L 内存中被锁了内存分页
s 主进程
l 多线程进程
+ 前台进程
netstat 查看端口
安装:yum install net-tools
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
netstat -lnp 查看监听端口
netstat -an 查看系统的网络连接状况
netstat -lntp 只看出tcp的,不包含socket
ss -an 和netstat异曲同工
tcp的状态:
netstat -an |awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'
tcpdump 抓包工具
安装:yum install tcpdump
-a —— 将网络地址和广播地址转变成名字
-d —— 将匹配信息包的代码以人们能够理解的汇编格式给出
-dd —— 将匹配信息包的代码以c语言程序段的格式给出
-ddd —— 将匹配信息包的代码以十进制的形式给出
-e —— 在输出行打印出数据链路层的头部信息
-f —— 将外部的Internet地址以数字的形式打印出来
-l —— 使标准输出变为缓冲行形式
-n —— 不把网络地址转换成名字
-nn —— 不进行端口名称的转换。
-t —— 在输出的每一行不打印时间戳
-v —— 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv —— 输出详细的报文信息
-c —— 在收到指定的包的数目后,tcpdump就会停止
-F —— 从指定的文件中读取表达式,忽略其它的表达式
-i —— 指定监听的网络接口(网卡)
-r —— 从指定的文件中读取包(这些包一般通过-w选项产生)
-w —— 直接将包写入文件中,并不分析和打印出来
-T —— 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)
-s0 抓取完整包
用法:tcpdump -nn
tcpdump -nn -i ens33
tcpdump -nn -i ens33 port 80 只抓80端口的包
tcpdump -nn -i ens33 not port 22 and host 192.168.0.100 排除22端口和指定host
tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap 抓100个包存到自定义文件里面
DDos udp flood 洪水攻击
tshark 抓包工具
安装:yum install -y wireshark
查看指定网卡80端口的web服务状态:
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"