HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

评论

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

实例操作教你爬取京东的商品数据

技术冰糖葫芦

回南天、沙尘天轮番来袭?华为天气这份每日早报请及时查收!

最新动态

DR9274-5GK|QCN9224 QCN9274 QCN6274 WiFi7 Lower Power Consumption Network Card

wallyslilly

qcn9274 qcn6274 QCN9224

可视化学习:实现Canvas图片局部放大镜

不在线第一只蜗牛

可视化 canvas 项目开发

HN 热帖|替换 Redis 的一场赛跑

小猿姐

数据库 redis 开源协议

在iPhone / iPad上轻松模拟GPS位置:AnyGo for Mac 支持M1

iMac小白

AI时代来临我们要如何面对?

高端章鱼哥

实时渲染是什么意思?实时渲染和离线渲染的区别

3DCAT实时渲染

实时渲染

第十一届网络视听大会:鸿蒙激活产业创新,以系统级AI技术赋能体验升级

最新动态

知识图谱智能问答系统技术实现

悦数图数据库

低代码与系统集成:革新企业应用开发的新动力

不在线第一只蜗牛

低代码 系统集成 项目开发

010 Editor for Mac(最好用的十六进制编辑器)v14.0激活版

iMac小白

低代码与数智化OA:重塑企业办公新生态

EquatorCoco

低代码 数智化 OA

Macos思维导图工具:XMind for Mac v24.01中文版

iMac小白

低代码助力企业打造业务管理云平台

快乐非自愿限量之名

低代码 业务管理

60万年薪失业后,我对"成长、价值、时间"的理解

Jackchang234987

职场发展 成长性 成长感悟

慢工之旅:婺源的故事

明道云

最新体育赛事直播系统源码、示例演示链接及其功能介绍

软件开发-梦幻运营部

你知道APP主要关心MobPush消息推送的哪些能力吗?

MobTech袤博科技

ios 开发者 智能推送

Redis 开源协议变更背后:开源软件与云计算巨头的竞争博弈

AutoMQ

redis 大数据 云原生 AutoMQ BSL

containerd快速安装指南🚀

GousterCloud

Docker cRI Containerd

Mysql/etc/my.cnf参数详解

百度搜索:蓝易云

MySQL Linux 运维 云服务器 /etc/my.cnf

Docker技术全景:推动云原生架构的关键力量

快乐非自愿限量之名

Docker 容器 云原生

Timecho 联合组织 Apache PLC4X 社区 Meetup:探索工业物联网的未来

Apache IoTDB

JavaScript代码安全性提升:选择和使用JS混淆工具的指南

五款常用在线JavaScript加密混淆工具详解:jscrambler、JShaman、jsfack、ipaguard和jjencode

雪奈椰子

Macos数据库管理工具:Valentina Studio Pro for Mac激活版 支持M1

iMac小白

Mac专业级音频制作工具:Logic Pro X for Mac中文版 支持M1

iMac小白

双料荣誉!微帧科技荣获「实力先锋企业」&「数智出海服务企业奖」

微帧Visionular

一文搞懂 Kafka consumer 与 broker 交互机制与原理

AutoMQ

大数据 kafka 云原生 broker AutoMQ

DOM(文档对象模型):理解网页结构与内容操作的关键技术

小万哥

xml 程序人生 编程语言 软件工程 前端开发

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