目录
- Linux 常用运维工具
-
- 常用系统监测工具
- 一. CPU 负载
-
- 常用命令:
- 常用工具解释:
- 1. top
- 2. vmstat
- 3. iostat
- 二. 磁盘IO
-
- 常用命令
- 三. 网络
-
- 常用命令
- 常用工具解释:
- 1. tcpdump
- 2. traceroute
- 3. netstat
- 4. nethogs
- 四. 内存
-
- 常用命令
- 五. 进程
-
- 1. ps
- 2. htop
- Tcp连接优化(效果未知)
-
- 待续
- 摘要
Linux 常用运维工具
线上排故包括 硬件 cpu 磁盘 内存 I/O 网络 等问题
常用系统监测工具
一. CPU 负载
工具 | 描述 |
---|---|
uptime | 平均负载 |
vmstat | 系统范围cpu平均负载 |
mpstat | 查看所有cpu核信息 |
top | 监控每个进程cpu用量 |
sar -u | 查看cpu信息 |
pidstat | 每个进程cpu用量分解 |
perf | cpu剖析和跟踪,性能计算分析 |
常用命令:
//查看系统cpu使用情况
top//查看所有cpu核信息
mpstat -P ALL 1//查看cpu使用情况以及平均负载
vmstat 1//进程cpu的统计信息
pidstat -u 1 -p pid//跟踪进程内部函数级cpu使用情况
perf top -p pid -e cpu-clock
常用工具解释:
1. top
查看进程活动状态及系统状况
顶部显示内容:
- 表示 3点19分46秒启动,以运行一个小时24分钟,2个用户登录,平均负荷为:0.00,0.01,0.05 分别为5分钟10分钟15分钟时的负荷
- 进程任务:108,1个活跃,107个睡眠,0个停止,0个僵尸进程
- 表示CPU状态(单位秒):用户cpu,系统cpu,高优先级用户进程,等待io完成的cpu时间,处理硬件中断的cpu时间
- 表示内存使用
字段:
PID(进程号)USER(所属用户)PR(调度优先级)NI(进程优先级)VIRT(虚拟内存)RES(驻留内存)SHR(共享读写)S(进程状态:D 不可中断睡眠 R 运行状态 S 休眠状态 T 停止状态 Z 僵尸状态%CPU(自从上一次更新时到现在任务所使用的CPU时间百分比)%MEM(进程使用的可用物理内存百分比)TIME+(任务启动后到现在所使用的全部CPU时间)
常用参数:
top //直接用1(数字1) //按数字键盘1显示多核监控l(小写L) //单独显示cup负荷m //显示内存负荷z //改变颜色u //特定用户经常
cpu利用率:
cpu有100%的利用率,那就应该达到这样的一个平衡:65%-70% UserTime,30%-35%SystemTime,
0%-5%IdleTime。
查看cpu核心数命令:
cat /proc/cpuinfo|grep processor|wc -l
2. vmstat
查看系统状态,硬件和系统信息等
Procs(进程:r:运行中的进程数 b:等待中的进程数) Memory(内存:swpd:使用虚拟内存大小 free:可用内存大小 buff:缓冲内存大小 cache:缓存内存大小)Swap(si:每秒写入内存大小 so:每秒写入交换区大小)IO (输入输出,块为单位 1块=1024bytes bi:每秒读取块数 bo:每秒写入块数)system(系统:in:每秒中断数 cs:每秒上下切换数)cpu(以百分比为单位:us:用户进程执行时间 sy:系统进程执行时间 id:空闲时间 wa:等待io时间)PS:
1. 如果 r 经常大于4,且 id 经常小于40,表示cpu负荷很重。
2. 如果 pi ,po 长期不等于0,表示内存不足。
3. 如果 disk 经常不等于0,且在 b 队列中大于3,表示io性能不好
4. 如果以上都有出现,删库跑路吧,垃圾服务器维护个屁。
常用参数:
内存相关:
vmstat 5 5 //表示在5秒时间内进行5次采样。将得到一个数据汇总他能够反映真正的系统情况。vmstat -a 2 5 //-a 显示活跃和非活跃内存,inact:非活跃 active:活跃
vmstat -s //查看内存使用详情
数据取自 /proc/meminfo,/proc/stat和/proc/vmstat
磁盘相关:
vmstat -d //查看磁盘读写vmstat -p /dev/sda1 //查看某个盘的读写
merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.
信息主要来自于/proc/diskstats
相关重要:
r(运行队列)
pi(页导入)
us(用户cpu)
sy(系统cpu)
id(空闲)
3. iostat
主要查看cpu负载,部分硬盘状况
安装:
yum install sysstat
%user:CPU处在用户模式下的时间百分比。%nice:CPU处在带NICE值的用户模式下的时间百分比。%system:CPU处在系统模式下的时间百分比。%iowait:CPU等待输入输出完成时间的百分比。%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。%idle:CPU空闲时间百分比。tps:该设备每秒的传输次数kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;kB_read: 读取的总数据量;kB_wrtn:写入的总数量数据量;PS:
1. 如果%iowait过高,表示硬盘io跑不动了
2. 如果%idle过高,表示cpu空闲,内存可能跑不动
3. 如果%idle持续低于10,表示cpu可能负荷很重
4. 别问,问就删库跑路。
常用参数:
iostat 2 100 //每两秒刷新一次共100次iostat -c 1 1 //查看cpu状态
iostat -d /dev/sda1 //查看某块磁盘信息
二. 磁盘IO
I/O是输入输出简写,需要大量内存和存储,频繁的读写数据。
cpu用于计算大量数据,一般cpu的速度都比i/o快,所以大部分时间都是cpu等硬盘。
工具 | 描述 |
---|---|
iostat | 磁盘详细统计信息 |
df | 磁盘信息统计 |
iostop | 按进程查看磁盘 IO 使用状况 |
pidstat | 按进程查看磁盘 IO 使用状况 |
perf | 动态追踪工具 |
常用命令
//查看系统io信息
iotop//统计io详细信息
iostat -d -x -k 1 10//查看进程级io的信息
pidstat -d 1 -p pid//查看系统IO的请求,比如可以在发现系统IO异常时,可以使用该命令进行调查,就能指定到底是什么原因导致的IO异常
perf record -e block:block_rq_issue -agperf report//查看磁盘容量
df -hl
三. 网络
工具 | 描述 |
---|---|
ping | 通过ICMP穿透报告 |
tcpdump | 抓取网络数据包,详情分析 |
netstat | 显示非常详细的网络信息 |
ss | 获取socket统计信息 |
host | 获取某主机的iip |
traceroute | 检测主机与目标跳数 |
tcpflow | 面向tcp流 |
sar -n DEV | 网卡流量情况 |
sar -n SOCK | 查询网络及tcp,udp状态 |
常用命令
//显示网络统计信息
netstat -s//显示当前UDP连接状况
netstat -nu//显示UDP端口号的使用情况
netstat -apu//统计机器中网络连接各个状态个数
netstat -a | awk \\'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}\\'//显示TCP连接
ss -t -a//显示sockets摘要信息
ss -s//显示所有udp sockets
ss -u -a//tcp,etcp状态
sar -n TCP,ETCP 1//查看网络IO
sar -n DEV 1//抓包以包为单位进行输出
tcpdump -i eth1 host 192.168.1.1 and port 80 //抓包以流为单位显示数据内容
tcpflow -cp host 192.168.1.1
常用工具解释:
1. tcpdump
抓取网络数据包,详情分析
常用参数:
tcpdump -i ens33 //指定网卡 基本什么都看不清
tcpdump -i ens33 host 192.168.3.103 and tcp port 80 //指定某个ip某个端口
网络性能指:可用性,响应时间,网络利用率,网络吞吐量。
ping命令用于检测网络的可用性
ping -c 5 www.baidu.com
-c指定5个数据包
在Cisco交换机中有三类数据包缓冲区:小型数据包,中心数据包,大型数据包
在unix中,ping工具使用64字节大小,56字节数据,8字节ICMP头信息。
ping -s 100 -c 5 www.baidu.com
指定 数据包大小100 + 8 icmp头信息
默认情况下,Linux系统的TTL值为64或255,WindowsNT/2000/XP系统的TTL值为128,Windows98系统的TTL值为32,UNIX主机的TTL值为255。
响应时间
ping 命令有回显时间,一般内部100m的lan相应时间小于1ms,wan连接相应时间小于300ms,
具有冗余路径的网络中,效率最高。
2. traceroute
路由追踪,测试路由回显相应时间
3. netstat
接一些参数可查看本地网络及端口状况
常用参数
netstat -i //网卡信息
netstat -r //路由信息
netstat -t //tcp
netstat -u //udp
netstat -g //组播关系
netstat -s | egrep “listen|LISTEN” //利用netstat也可查看tcp队列溢出
4. nethogs
查看进程占用带宽情况-Nethogs
Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。
四. 内存
工具 | 描述 |
---|---|
free | 缓存容量统计 |
vmstat | 虚拟内存统计 |
valgrind | 分析程序性能及内存泄漏错误 |
sar -r | 查看内存 |
常用命令
//查看系统内存使用情况
free -m//虚拟内存统计信息
vmstat 1//检测程序内存问题
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt ./程序名
五. 进程
1. ps
类似netstat
常用参数:
ps -A //列出所有进程
ps -u //以用户形式列出后接用户
ps -aux --sort -pcpu | less //以cpu用量列出
ps -aux --sort -pmem | less //以内存用量列出
2. htop
实时进程监控
Tcp连接优化(效果未知)
备份
添加这三行
net.ipv4.tcp_syncookies = 1 //开启 SYN cookies 出现SYN等待队列溢出时启用cookie来处理,可一定程度减少SYN攻击。
net.ipv4.tcp_tw_reuse = 1 //允许将TIME-WAIT sockets 重新用于新的TCP连接。
net.ipv4.tcp_tw_reuse = 1 //允许开启TCP连接中TIME-WAIT sockets的快速回收。
立即生效
/sbin/sysctl -p
待续
摘要
linux vmstat命令详解和使用实例(linux系统监控工具)
Linux iostat命令详解–小a玖拾柒
top–史上最详细解释–阿丑酱