前阵子部署的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 running during 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 elapsed CPU 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问题排查常用命令详解相关推荐

  1. Linux常用命令详解(两万字超长文)

    Linux常用命令详解 作为一枚程序员,熟练掌握一些常见的linux命令是很有必要的,掌握这些命令能帮助我们更好地管理Linux系统,提高工作效率,并有效地解决各种问题,为了方便自己后续查阅以及帮助不 ...

  2. Linux常用命令详解文库

     Linux常用命令详解文库.txt精神失常的疯子不可怕,可怕的是精神正常的疯子!Linux常用命令详解 来源: LUPA开源社区 发布时间: 2007-05-27 05:34 版权申明 字体: ...

  3. Linux常用命令详解 ls -l命令详解

    Linux常用命令详解 ls -l命令详解 一.ls -l命令显示效果 使用ls -l会产生长列表格式输出,包含了目录中每个文件的更多的信息. 注:蓝色或/表示目录,如果带绿色或*号表示可执行文件. ...

  4. Linux常用命令详解(最全)

    Linux命令目录 Linux命令集合 系统信息 关机 (系统的关机.重启以及登出 ) 文件和目录 文件搜索 挂载一个文件系统 磁盘空间 用户和群组 文件的权限 - 使用 "+" ...

  5. Linux常用命令详解(转)

    Linux常用命令详解(转) Linux之所以受到广大计算机爱好者的喜爱,主要原因有两个,首先它是自由软件,用户不用支付费用就可以使用它,并可根据自己的需要对它进行修改.另外,它具有Unix的全部功能 ...

  6. Samtools(CentOS Linux)安装及常用命令详解

    序列比对(将测序reads与已知序列信息的基因或基因组进行比对)是高通量测序数据分析中最重要的一环,无论是转录组还是重测序都是基于比对结果来进行后续各项分析的,比对结果格式比较常见的是sam和bam文 ...

  7. router linux命令,router os 常用命令详解

    router os 常用命令详解 发布时间:2006-04-20 01:17:30来源:红联作者:[Hl.y] 看了很多router os 的资料都是关于如何安装的,却很少见到关于router os的 ...

  8. U-Boot的常用命令详解

    2019独角兽企业重金招聘Python工程师标准>>> U-Boot的常用命令详解 U-Boot 还提供了更加详细的命令帮助,通过 help 命令还可以查看每个命令的参数说明.由于开 ...

  9. linux cut命令学习,Linux中的cut 命令详解

    今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...

最新文章

  1. 蓝桥杯java第四届决赛第四题--九宫重排
  2. 6421B Lab10 网络文件和打印服务的配置与故障排除
  3. xcode中工程引用设置
  4. 国际C语言混乱代码大赛结果公布
  5. 【java】java 并发编程 StampedLock 锁 【不重要】
  6. 网站通行证的交互设计分析
  7. java毕业设计大学生体检管理系统Mybatis+系统+数据库+调试部署
  8. PCAN二次开发,用MFC发送一帧CAN消息
  9. Adobe Illustrator CS6 已停止工作 的问题
  10. 基于地理位置的Android AR app项目简述
  11. 基于matlab的脑瘤mr图像处理_基于电势能改进的区域生长脑肿瘤图像分割
  12. FastStone注册码
  13. 路由跳转后需要两次调用goback才能正常返回
  14. C中fread()函数的建议使用方法
  15. 向量空间 vector space
  16. eclipse web 项目目录结构
  17. codeforces [Gym-100814K]
  18. 福州python招聘_【Python程序员招聘|Python程序员最新招聘信息】-看准网
  19. 【皖东明珠——琅琊山】
  20. 印度加密独角兽 Matic 是怎样炼成的? |链捕手

热门文章

  1. SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务
  2. php 正则表达式 x,php – 匹配x正则表达式或y正则表达式
  3. qt 运行库 linux,linux(ubuntu) 版qt5.x安装的一些知识
  4. html动画效果放大,一个CSS+jQuery实现的放大缩小动画效果
  5. 如何使 React 中的 useEffect、useLayoutEffect 只调用一次
  6. 在 Markdown 中,如何在反引号对语句中使用反引号
  7. NOP (code)_NOP指令作用及解析
  8. 慕课-北京理工大学 机器学习 大学生上网时间 聚类,小白学习
  9. $routeParams $route.current.params
  10. iOS开发-编译出错 duplicate symbols for architecture x86_64