如何判定压力瓶颈在哪里

cpu的瓶颈

  • 使用top命令,查看cpu使用率

  • 增加压力后,使用命令vmstat查看CS(上线文切换),如果变化异常,说明CS出了问题

  • 增加压力后,使用命令vmstat查看r(cpu等待队列),如果数值较高,说明cpu等待队列增加,cpu的问题

压力和内存使用率

  • 用命令查看内存占用,top,再按M,按占着内存排序(按P,是按cpu占用排序,按T是按运行时间)
  • 用命令 top -Hp pid号 看详细信息
  • 用命令pidstat -p pid号 -u -d -t -w -h 1 1000(1秒钟刷新一次,刷新1000次)
  • 查看上下文切换,如果切换高,也会占用内存
  • 使用free -h 查看av'a'ilable(可用剩余内存)

当发生内存泄漏时(out of memory)

  • TPS骤降
  • 内存基本无可用,突然释放,再次耗光
  • 使用dmesg -T查看操作系统日志是否触发out of memory
  • 该日志存于/var/log/messages

网络三次握手

四次挥手

查看网络队列,判断瓶颈点

  • netstat -naop|more
  • 查看字段Recv-Q、Send-Q
  • Send-Q:发送队列中没有被远程主机确认的bytes数
  • Recv-Q:就是指接受的数据还在缓存中,还没被进程读取,这个值就是还没有被进程读取的bytes:一般是CPU处理不过来导致的。
  • 根据Recv-Q、Send-Q判断瓶颈点在哪里

  • 修改半链接队列,和accept队列

  • 使用命令:sysctl -a | grep net.core.somaxconn来查看对应数值
  • 使用命令:sysctl -w net.core.somaxconn=1024来修改对应值
  • 永久生效方法:在/etc/sysctl.conf文件中新增一行:net.core.somaxconn=1024,执行sysctl -p

netstat命令介绍

  • netstat -nlpt 可以查看进程使用的端口和队列
  • netstat -naop 可查看进程是否长短链接

iftop找网络带宽和端口对应关系

  • ifconfig找对应网卡
  • iftop -i ens192 -n -P (-n 将host以ip显示,-P将端口和IP显示出来,-i 设定监测网卡)
  • peak显示打开iftop后带宽峰值
  • cum显示打开iftop后的总流量
  • TX:发送的数据
  • RX:接受的数据
  • rates:过去2S,10S,40S的平均流量
  • 使用iftop可以找到占用带宽的端口,然后使用netstat查到端口对应的进程

例子:带宽占用很高

  • 使用iftop -i ens192 -n -P 查找到了端口为277的程序占用带宽很高
  • 使用 netstat -ap|grep 277 查找到端口为277的进程号:2208
  • 使用lsof -p 2208 查看2208的进程所有文件

sysctl -a查看操作系统参数

  • sysctl -a | grep tcp 查询网络参数
  • 使用命令:sysctl -w net.core.somaxconn=1024来修改对应值
  • 永久生效方法:在/etc/sysctl.conf文件中新增一行:net.core.somaxconn=1024,执行sysctl -p
  • 当发现系统参数不够用时,查询对应参数什么意思,去调整
posted @ 2022-11-09 16:22  77的小白  阅读(161)  评论(0)    收藏  举报