把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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:461548

评论

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

全网超火Blender零基础教程!从零上手的免费3D软件

Finovy Cloud

blender 3D软件

如何通过Java更改Word中的页面大小和页面方向

在下毛毛雨

Java word 页面布局

华为云视频直播,流量大放“价”,超好用!

科技怪授

五大方面多管齐下,用友助力企业建设世界一流司库体系

用友BIP

海泰方圆又双叒叕连获两项隐私计算专利

电子信息发烧客

未来智安入选FreeBuf《CCSIP 2022中国网络安全行业全景册(第五版)》

未来智安XDR SEC

国有企业财务数智化转型实践,用友BIP一路随行

用友BIP

财务数智化

焱融为国家电网打造存算一体的融合基础架构 助推能源行业新基建

焱融科技

文件存储 容器存储 分布式文件存储 高性能存储 国家电网

AGI时代即将降临,现代化产业建设的出路又在何处?

加入高科技仿生人

低代码 AGI 现代化产业

华为工单宝——为企业客户提供更强大的数字化现场作业解决方案

科技怪授

CDN 华为云

阿里表哥甩我一份Redis笔记,看完还进不了阿里让我卖豆腐去

Java 数据库 nosql redis 缓存

这是我见过最好的JVM笔记,拿到阿里offer后我哭了

Java JVM 虚拟机 垃圾回收

“AI 上运动,直播更精彩” 百度智能云联手 Pixellot 创新中国大众体育传播新模式

Baidu AICLOUD

视频云 云导播

企业支出如何一眼看全局,用友BIP很在行

用友BIP

商旅费控

CDN省钱大法!华为云开年采购季低价购,CDN0.03元/GB起,短信0.006元/条起

科技怪授

CDN 华为云

以“业财合一”构建业务财务体系,让财务更在行,让业务会经营

用友BIP

测试人社区——软件测试技术沙龙分享

测试人

人工智能 软件测试 精准测试 工程效能 ChatGPT

《中国奇谭》打动万千观众,一首歌道尽现代人心酸

曲多多(嗨翻屋)版权音乐

音乐 音乐播放

GitHub 润色框架,让你的GitHub不再索然无味

GitHub

前端有边界,但低代码没有

引迈信息

前端 后端 低代码 ChatGPT

强大的录屏:Camtasia 2022 汉化激活版

真大的脸盆

Mac 软件 屏幕录制 录屏软件 录屏工具

从“可用”到“好用” 京东云构建融合开放适配国产化应用的全栈产品矩阵

京东科技开发者

国产化 京东云 国产化替代 京东云峰会

强!阿里P9限时开源的实战笔记:SpringBoot2精髓

Java 面试 微服务 Spring Boot 框架

面试官:String字符串的最大长度是多少?

Java

Matlab常用图像处理命令108例(八)

timerring

图像处理

浪潮inBuilder低代码平台社区版来了!

inBuilder低代码平台

开源 低代码 企业级低代码平台

保姆级教程!基于声网 Web SDK实现音视频通话及屏幕共享

RTE开发者社区

什么是智慧公厕?智慧公厕存在的意义!

光明源智慧厕所

智慧城市

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