写点什么

CPU 高负载排查小技巧

  • 2019-11-21
  • 本文字数:1073 字

    阅读完需:约 4 分钟

CPU高负载排查小技巧

服务优化是一个细心、漫长的过程,一个很小的优化不仅可以为用户带来更稳定更快速的互联网体验,也许还会为公司降低百万以上的成本。熟练掌握服务端排错技巧,已经是“匠心工程师”的标配技能。这篇 CPU 排错小技巧,希望能够帮助到大家。

前言

为了能够支撑大并发并且合理的利用机器资源,一台服务器部署了 n 个 tomocat 的 java 微服务、或者是同时开启了多个端口的 fastcgi,这些其实都是很正常的操作。但是往往会出现某一个实例的某个方法的执行,导致 cpu 负载非常高从而引发报警。当然,很多同学的第一想法就是“扩容”,于是便找到 OPS 的兄弟“给我扩 xx 台机器”,浪费了资源先不说,但是这样往往解决不了实质性的问题,毕竟不是可以无限扩容机器的。那么我们怎么排查此类问题做好优化工作呢?今天就给大家举例说明,希望同学们 get 这个小技能后多多使用,不断磨练自己的程序,说不定你的耐心优化,就会为公司节省 1 个亿的小目标!


步骤

步骤一:找到最耗 CPU 的进程

工具:top


方法:


1.执行 top -c ,显示进程运行信息列表;


2.键入 P (大写 p),进程按照 CPU 使用率排序;



如上图,最耗 CPU 的进程 PID 为 18154

步骤二:找到最耗 CPU 的线程

工具:top


方法:


1.top -Hp 18154 ,显示一个进程的线程运行信息列表


2.键入 P (大写 p),线程按照 CPU 使用率排序



如上图,进程 18154 内,最耗 CPU 的线程 PID 为 15259

步骤三:将线程 PID 转化为 16 进制

工具:printf


方法:



如上图,15259 对应的 16 进制是 0x3b9b,当然,这一步可以用计算器


之所以要转化为 16 进制,是因为堆栈里,线程 id 都是用 16 进制表示的。

步骤四:查看堆栈,找到线程在干嘛

工具:pstack/jstack/grep


方法:jstack -F 15259 | grep ‘0x3b9b’


1.打印进程堆栈


2.通过线程 id,过滤得到线程堆栈



如上图,找到了耗 CPU 高的线程对应的线程名称“main”方法,以及看到了该线程正在执行代码的堆栈。

步骤五:打印的结果看起来不是很明显,那我们就直接 jstack 写到文件

工具:jstack


方法:jstack -l 15259 > 15259.stack


1.打印进程堆栈


2.通过线程 id 找到 15259.stack,然后通过 0x3b9b 搜索


总结

服务优化是一个细心、漫长的过程,一个很小的优化不仅可以为用户带来更稳定更快速的互联网体验,也许还会为公司降低百万以上的成本。熟练掌握服务端排错技巧,已经是“匠心工程师”的标配技能。这篇 CPU 排错小技巧,希望能够帮助到大家,多用多用,体会一下系统调优的乐趣。最后附上一张图,每个系统排错、优化的命令等待着你去发掘。



本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/jGVXXncEZ1gFBb3pINhRRg


2019-11-21 23:461397

评论

发布
暂无评论
发现更多内容

2021年10月券商App行情刷新及交易体验评测报告,兴业证券荣登榜首!

博睿数据

GrowingIO Design 图标库:从原理到实现

GrowingIO技术专栏

SVG 图标库 Sprites Icon Font GrowingIO Design

C++ 动态新闻推送 第36期

很水

c++

四大研究成果入选 百度安全在Black Hat Europe 2021再创历史

百度安全

应用安全 百度安全 Black Hat 漏洞利用 恶意软件

Alibaba Druid 源码阅读(四) 数据库连接池中连接获取探索

数据库

模块三-学生管理系统架构设计文档

迪马

区块链之共识算法系列——PoW(二)

Regan Yue

区块链 11月日更 趣讲区块链

互联网大厂考点(阿里+百度+腾讯+字节跳动+美团+京东)

Java高级开发

Java 程序员 架构 面试 大厂

当一名科技女性,决定不再做月亮

脑极体

【得物技术】得物直播秒开体验提升

得物技术

体验 直播 视频 优化 卡顿

Alibaba Druid 源码阅读(一) 数据库连接池初步

数据库

网易云信携手“瑶台”,打造元宇宙商业化实践标杆案例

网易云信

人工智能 虚拟化 虚拟人 元宇宙

ZGC在合合信息HBase平台中的实践

合合信息大数据团队

大数据 性能优化 ZGC HBase 合合信息

研发提效:通过设计稿自动生成前端代码。

石云升

大前端 自动生成 11月日更 研发提效

C++ 动态新闻推送 第35期

很水

质量基础设施一站式云服务平台搭建,NQI一站式服务平台

电微13828808271

鸿蒙的绿野仙踪

脑极体

Alibaba Druid 源码阅读(三) 数据库连接池初始化探索

数据库

12 K8S之应用容器及Pod资源

穿过生命散发芬芳

k8s 11月日更

投资元宇宙,如何开启混合现实开发

龙智—DevSecOps解决方案

游戏开发 元宇宙 混合现实

阿里灵杰产品全面拥抱云原生,双11优惠让企业体会上云便利

阿里云大数据AI技术

大数据 AI 云原生 阿里灵杰

Prometheus HTTP API 查询(六)Prometheus Server 状态和 TSDB 状态

耳东@Erdong

Prometheus PromQL HTTP API 11月日更

详解低延时高音质:回声消除与降噪篇

声网

回声消除 音频体验 RTE技术详解

Alibaba Druid 源码阅读(二) 数据库连接池实现初步探索

数据库

Alibaba Druid 源码阅读(五)数据库连接池 连接关闭探索

数据库

Python代码阅读(第57篇):倒序字符串

Felix

Python 编程 string 阅读代码 Python初学者

终于有人把“元宇宙”说清楚了

CECBC

区块链符号理论:符号方案和符号系统

CECBC

接口调用的链路

卢卡多多

接口 11月日更

送给正在入行的小白:最全最有用的网络安全学习路线已经安排上了

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

自定义View:如何实现手动拖动的图片控件

Changing Lin

11月日更

CPU高负载排查小技巧_文化 & 方法_HULK_InfoQ精选文章