Linux 系统性能排查工具

系统资源篇:

1.linux中uptime命令结果中load average的3个值解释:

       系统1分钟、5分钟、15分钟的CPU负载信息

Uptime用于显示系统总共运行了多长时间和系统的平均负载

无选项 uptime 命令会显示一行信息,依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行

2.除了uptime可以看负载,还有哪些命令可以看负载呢?

       top, uptime,w,vmstat、sar -q

top第一行与uptime类似,都是显示当前时间,系统运行时间,目前在线用户,系统过去1分钟,5分钟,15分钟的CPU负载信息

top第二行显示任务数量,运行中(running),休眠(sleeping),暂停(stopped),僵尸(zombie)

第三行显示CPU的状态信息2.3%

us — 用户空间占用CPU的百分比。

sy — 内核空间占用CPU的百分比。

ni — 改变过优先级的进程占用CPU的百分比

id — 空闲CPU百分比

wa — IO等待占用CPU的百分比

hi — 硬中断(Hardware IRQ)占用CPU的百分比

si — 软中断(Software Interrupts)占用CPU的百分比

st - 表示被强制等待虚拟CPU的时间

第四行显示的是内存状态

分别是总量(total),空闲(free),使用中(used),缓存的内存大小(buff/cache)

第五行显示的是swap交换分区的信息

分别是总量(total),空闲(free),使用中(used),虚拟内存总量(avail Mem)

第六行各个进程的状态监控

PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

3.通用top命令使用:

3.1 如何在top模式下查看每个cpu的使用情况:

     可以在top模式下按数字1

3.2 如何在top模式下以CPU使用率进行从高到低排序

     在top模式下按C 进行CPU使用率从高到低的排序

3.3 如何在top模式下以内存使用率进行从高到低排序

     在top模式下按M 进行mem使用率从高到低的排序

3.4 top模式第2行关于tasks描述,请描述各值的含义

   ​176 total:当前有176个任务 1 running:1个任务正在运行 175 sleeping:175个进程处于睡眠状态 0            stopped:停止的进程数 0 zombie:僵死的进程数

3.5 显示一个进程中各个线程CPU的占用率。

     top -p <pid> -H

  

4.查询占用swap内存的vm,以及占用swap的大小。

    ps -ef >/tmp/psef&&for i in $(awk '/qemu/{print $2}' /tmp/psef ); do echo -ne "$(grep $i /tmp/psef|awk -F'=|,' '{print $2}')\t";awk '/^Swap:/ {SWAP+=$2}END{print SWAP/1024" MB"}' /proc/$i/smaps 2>/dev/null;done|sort -k2 -n

5.统计节点内存的使用情况:

       ps aux  |awk '{sum+=$6}END{print sum/1024/1024}'

6.查看内存使用情况:

   free -w

7.vmstat 结果输出中r b两个值代表的意思? 

r:当前运行队列中线程的数目,代表线程处于可运行状态,但CPU还未能执行.,这个值可以作为判断CPU是否繁忙的一个指标;当这个值超过了CPU数目,就会出现CPU瓶颈了;这个我们可以结合top命令的负载值同步评估系统性能;

       b:等待IO的进程数量;如果该值一直都很大,说明IO比较繁忙,处理较慢;

sar工具使用篇:

1.统计CPU的使用情况,每间隔1秒钟统计一次总共统计三次

   sar -u  1  3

2.查看内存使用情况

   sar -r

3.磁盘使用详情统计

   sar -dp

4.统计网络信息:

   sar -n DEV 1 1

5.查看历史负载

       sar -q

6.查看磁盘读写

       sar -b

7.查看历史监控数据,指定12号监控时间为从下午14:50点到15:30的cpu监控数据。

       LANG=C sar -f /var/log/sa/sa12 -s 14:50:00 -e 15:30:00 -u

8.查看历史监控数据,指定18号监控时间为从下午14:50点到15:30的负载监控数据。

       LANG=C sar -f  /var/log/sa/sa18 -s 14:50:00 -e 15:30:00 -q

9.查看历史监控数据,指定18号监控时间为从下午14:50点到15:30的磁盘使用监控数据。

       LANG=C sar -f  /var/log/sa/sa18 -s 14:50:00 -e 15:30:00 -dp

      

10.看历史监控数据,指定18号监控时间为从下午14:50点到15:30的磁盘读写监控数据

       LANG=C sar -f  /var/log/sa/sa18 -s 14:50:00 -e 15:30:00 -b

      

11.看历史监控数据,指定18号监控时间为从下午14:50点到15:30的网卡监控数据

       LANG=C sar -f  /var/log/sa/sa18 -s 14:50:00 -e 15:30:00 -n DEV

网络篇:

1.如何通过arping检测IP冲突:

arping -I  eth1  x.x.x.x -b

 

2.通过tcpdump抓包,监听指定网卡eth0的所有传输数据包:

tcpdump -i eth0

3.抓取主机192.168.1.200 经过本机网卡eth0的所有数据包:

tcpdump -i eth0 host 192.168.1.200

4.测试端口连通性可以使用哪些命令?

   nc 

   telnet

  

5.查看TCP连接状态

   netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

   netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'

   netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'

   netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn

   netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

6.查找80端口请求数前20个IP

    netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

​    7.用tcpdump嗅探80端口的访问数最高的ip

​              tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr             |head -10

​       8.查找较多time_wait连接

​              netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n10

​       9.找查较多的SYN连接

​              netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

​       10.根据端口列进程

​              netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1

磁盘篇:

1.使用iotop监控root用户下有哪些进程有io。

        iotop -u root

2.使用iotop只显示有io操作的进程。

        iotop --only

3.使用iotop查询进程20709的io.

         iotop -p 20709

4.通过iostat查询磁盘的使用情况

      iostat -d

5.通过iostat查询磁盘详细的使用情况

         iostat -dx

6.通过iostat以M为单位显示磁盘使用情况。

         iostat -dxm

7.通过iostat以每2秒为周期,采集5次磁盘使用情况

         iostat -dx  2  5

8.通过iostat 以每2秒为周期,采集5次sda磁盘的使用情况

      iostat -dx 2 5 /dev/sda

      

9.通过iostat查询磁盘阵列lvm的使用情况。

      iostat -dxN 

      

10.在iostat的结果输出中,需要关注哪些信息?

       %iowait  当%iowait的值过高,表示硬盘存在I/O瓶颈

       %idle    当%idle值高,表示CPU较空闲。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

       %util    当%util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈

       svctm与await  当svctm与await值相近时,说明I/O几乎没有等待时间。如果await远大于svctm说明I/O队列太长,io响应慢。

       avgqu-sz 当avgqu-sz比较大时,说明当前有io在等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值