linux问题排查常用命令详解
前阵子部署的nginx服务器出现了故障,针对故障现场做了个排查,后来发现是nginx的quic分支代码的问题,出现了死循环导致CPU 近100%
记录下在排查的思路和排查过程中使用的命令和工具
查看CPU
top命令
load average:
该数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
VIRT:
进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:
驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:
SHR是进程使用的共享内存。共享内存大小,单位kb
S:
这个表示进程的状态。它有以下不同的值:
- D - 不可中断的睡眠态。
- R – 运行态
- S – 睡眠态
- T – 被跟踪或已停止
- Z – 僵尸态
%CPU:
自从上一次更新时到现在任务所使用的CPU时间百分比。
%MEM:
进程使用的可用物理内存百分比。
使用top命令后,按t,可以切换显示不同cpu信息
查看固定PID的CPU,内存情况
top -p {PID}
使用ps查询指定进程名或者PID的占用情况
ps -aux|grep nginx
ps -aux|grep 1425
值得注意的是ps 命令里的CPU和top 命令里的计算方式不一样
ps command
: CPU usage is currently expressed as the percentage of time spent runningduring the entire lifetime of a process.
This is not ideal,and it does not conform to the standards that ps otherwise conforms to.
CPU usage is unlikely to add up to exactly 100%.
top command:
The task’s share of the elapsedCPU time since the last screen
update, expressed as a percentage of total CPU time. In a true SMP environment, if ‘Irix mode’ is Off, top will operate in ‘Solaris mode’ where a task’s cpu usage will be divided by the total number of CPUs. You toggle ‘Irix/Solaris’ modes with the ‘I’ interactive command.
简单来说: ps是从进程开始就开始算的,是平均的占用率;而top是从上次刷新开始算的,一般几秒钟一刷,可以认为是即时的。 排查机器问题的话还是建议看top 命令的%CPU。
查看内存使用情况
free -m /opt/server/
查看机器的连接数
查看tcp连接数
netstat -nat |awk '{print $6}'|grep -v 'Foreign'|grep -v 'established)'|sort|uniq -c|sort -rn
当前机器的连接数还ok,不至于导致cpu 100%
常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。具体每种状态的意思参考下图就可以了:
分析堆栈信息
pstack
安装 gdb 的时候会自带安装 pstack ,使用如下命令安装即可
yum install gdb -y
pstack {PID}
使用pstack命令打印对应的堆栈信息, 相隔一段时间多次打印,看到的堆栈信息都是一样的,说明当前进程在该方法里"卡住了", 很大可能发生了死循环
参考资料:
Nignx服务器CLOSE_WAIT和TIME_WAIT过高分析
netstat 命令详解
分析进程调用pstack和starce
linux问题排查常用命令详解相关推荐
- Linux常用命令详解(两万字超长文)
Linux常用命令详解 作为一枚程序员,熟练掌握一些常见的linux命令是很有必要的,掌握这些命令能帮助我们更好地管理Linux系统,提高工作效率,并有效地解决各种问题,为了方便自己后续查阅以及帮助不 ...
- Linux常用命令详解文库
Linux常用命令详解文库.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!Linux常用命令详解 来源: LUPA开源社区 发布时间: 2007-05-27 05:34 版权申明 字体: ...
- Linux常用命令详解 ls -l命令详解
Linux常用命令详解 ls -l命令详解 一.ls -l命令显示效果 使用ls -l会产生长列表格式输出,包含了目录中每个文件的更多的信息. 注:蓝色或/表示目录,如果带绿色或*号表示可执行文件. ...
- Linux常用命令详解(最全)
Linux命令目录 Linux命令集合 系统信息 关机 (系统的关机.重启以及登出 ) 文件和目录 文件搜索 挂载一个文件系统 磁盘空间 用户和群组 文件的权限 - 使用 "+" ...
- Linux常用命令详解(转)
Linux常用命令详解(转) Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,首先它是自由软件,用户不用支付费用就可以使用它,并可根据自己的需要对它进行修改.另外,它具有Unix的全部功能 ...
- Samtools(CentOS Linux)安装及常用命令详解
序列比对(将测序reads与已知序列信息的基因或基因组进行比对)是高通量测序数据分析中最重要的一环,无论是转录组还是重测序都是基于比对结果来进行后续各项分析的,比对结果格式比较常见的是sam和bam文 ...
- router linux命令,router os 常用命令详解
router os 常用命令详解 发布时间:2006-04-20 01:17:30来源:红联作者:[Hl.y] 看了很多router os 的资料都是关于如何安装的,却很少见到关于router os的 ...
- U-Boot的常用命令详解
2019独角兽企业重金招聘Python工程师标准>>> U-Boot的常用命令详解 U-Boot 还提供了更加详细的命令帮助,通过 help 命令还可以查看每个命令的参数说明.由于开 ...
- linux cut命令学习,Linux中的cut 命令详解
今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...
最新文章
- 蓝桥杯java第四届决赛第四题--九宫重排
- 6421B Lab10 网络文件和打印服务的配置与故障排除
- xcode中工程引用设置
- 国际C语言混乱代码大赛结果公布
- 【java】java 并发编程 StampedLock 锁 【不重要】
- 网站通行证的交互设计分析
- java毕业设计大学生体检管理系统Mybatis+系统+数据库+调试部署
- PCAN二次开发,用MFC发送一帧CAN消息
- Adobe Illustrator CS6 已停止工作 的问题
- 基于地理位置的Android AR app项目简述
- 基于matlab的脑瘤mr图像处理_基于电势能改进的区域生长脑肿瘤图像分割
- FastStone注册码
- 路由跳转后需要两次调用goback才能正常返回
- C中fread()函数的建议使用方法
- 向量空间 vector space
- eclipse web 项目目录结构
- codeforces [Gym-100814K]
- 福州python招聘_【Python程序员招聘|Python程序员最新招聘信息】-看准网
- 【皖东明珠——琅琊山】
- 印度加密独角兽 Matic 是怎样炼成的? |链捕手
热门文章
- SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务
- php 正则表达式 x,php – 匹配x正则表达式或y正则表达式
- qt 运行库 linux,linux(ubuntu) 版qt5.x安装的一些知识
- html动画效果放大,一个CSS+jQuery实现的放大缩小动画效果
- 如何使 React 中的 useEffect、useLayoutEffect 只调用一次
- 在 Markdown 中,如何在反引号对语句中使用反引号
- NOP (code)_NOP指令作用及解析
- 慕课-北京理工大学 机器学习 大学生上网时间 聚类,小白学习
- $routeParams $route.current.params
- iOS开发-编译出错 duplicate symbols for architecture x86_64