Linux问题诊断与定位
1.Linux服务器变慢,诊断思路和性能评估:
1.1.整机:top,查看整机系统性能
重点关注的是 %CPU、%MEM 、load average 三个指标
load average三个指标:分别代表1、5、15分钟的负载情况
uptime:系统性能命令的精简版(load average三个指标)
1.2.CPU:vmstat
1.2.1.查看CPU(包含但是不限于)
vmstat -n 2 3
:每2秒采样一次,共采样3次
关注头尾指标:procs、cpu
procs中的r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2
procs中的b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
cpu中的us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
cpu中的sy:内核进程消耗的CPU时间百分比
us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足
id:处于空闲的CPU百分比
wa:系统等待IO的CPU时间百分比
st:来自于一个虚拟机偷取的CPU时间比
1.2.2.查看额外
1).查看所有CPU核信息:mpstat -p ALL 2
2).每个进程使用CPU的用量分解信息:pidstat -u 1 -p 进程编号
1.3.内存:free
free -h
:以人类能看懂的方式查看物理内存
free -m
:以MB为单位,查看物理内存
free -g
:以GB为单位,查看物理内存
20% < 应用程序可用内存/系统物理内存 < 70%,表示内存基本够用
1.4.硬盘:df,查看硬盘剩余空间数
df -h
(-h:human,表示以人类能看到的方式换算)
1.5.磁盘IO:iostat
磁盘I/O性能评估:iostat -xdk 2 3
磁盘块设备分布:
rkB /s:每秒读取数据量kB;
wkB/s:每秒写入数据量kB;
util:一秒钟有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;
查看额外:pidstat -d 采样间隔秒数 -p 进程号
1.6.网络IO:ifstat
默认没有ifstat,需要wget下载、解压、安装make/make install
2.生产环境出现CPU占用过高,谈谈分析思路和定位
结合Linux和JDK命令一块分析,步骤:
- 使用top命令找出CPU占比最高的
ps -ef
或者jps
进一步定位,得知是一个怎么样的后台程序出的问题- 定位到具体线程或者代码
ps -mp 进程 -o THREAD,tid,time
- 参数解释:
- -m:显示所有的线程
- -p:pid进程使用CPU的时间
- -o:该参数后是用户自定义格式
- 将需要的线程ID转换为16进制格式(英文小写格式)
printf “%x\n” 有问题的线程ID
jstack 进程ID | grep tid(16进制线程ID小写英文) -A60
- 精准定位到错误的地方
参考:
https://gitee.com/moxi159753/LearningNotes/tree/master/校招面试/JUC/13_Linux相关命令
本文来自博客园,作者:冰枫丶,转载请注明原文链接:https://www.cnblogs.com/lqsblog/p/17180993.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)