1.CPU过高常见原因

  • 代码的锅, 比如 :死循环,递归
  • 系统创建了大量线程池。线程池并发执行导致CPU过高
  • JVM在频繁执行full gc

2.频繁full gc原因

  • JVM内存配置不合理,导致新生代ygc快速进入老年代,老年代迅速撑满触发full gc.
  • 存在内存泄露,内存里驻留了大量对象进入老年代gc不释放,导出少量对象进入老年代就会触发full gc.
  • 元空间(永久代)设置太小类多塞满导致频繁full gc.
  • 代码有System.gc(),高并发下频繁full gc。

3.线上服务的CPU很高,怎么排查问题?

3.1排查步骤

  • top 命令,查看占用CPU高的进程pid
  • top -Hp pid 查看进程中最耗CPU的子线程
  • printf %x tid 将线程id 转换成16进制
  • jstack pid<开始的进程id> | grep <上一步转换出来的二进制线程id> -C10

如果说系统慢,那么要特别关注日志中的 Blocked,Waiting on condition

3.2常见问题

对于jstack日志,我们要着重关注如下关键信息

  • OOM:内存溢出 (java.lang.OutOfMemoryError)
  • Deadlock:表示有死锁
  • Waiting on condition:等待某个资源或条件发生来唤醒自己。具体需要结合jstacktrace来分析,比如线程正在sleep,网络读写繁忙而等待
  • Blocked:阻塞
  • Waiting on monitor entry:在等待获取锁

附录:完整排查过程

第一步:top 命令,查看占用CPU高的进程pid

top

第二步:top -Hp pid 查看进程中最耗CPU的子线程

top -Hp 14036

第三步:printf %x tid 将线程id 转换成16进制

printf %x 14038 \n

第四步:jstack pid<开始的进程id> | grep <上一步转换出来的二进制线程id> -C10

jstack 14036 | grep 36d6 -C20

注:jstack 是 在 jdk 包 bin 目录下的工具

找到业务中的代码行数定位问题

高级必会,摸鱼必背之CPU过高常见原因与解决相关推荐

  1. 义正词严的摸鱼 | 摸鱼系列

    一时兴起,想写一些自言自语的东西,原有的系列先暂停一周更新,我努力重构一下笔者的人设试图挽回持续下滑的阅读量. 摸鱼系列,主要写一些自言自语的,轻松的东西. 大家都上班摸鱼的经历,而且有各种各样好玩的 ...

  2. 闲鱼服务器临时维护,做好闲鱼运营必知技巧,这就是你不会做的一些原因

    闲鱼运营的办法其实不是很难,首先我们要掌握对一个平台的了解,以及闲鱼的动态还有规则.不要什么不知道就开始上去卖货然后过着时有时无的日子,这样是行不通的,闲鱼无需经过复杂的开店流程,即可达成包括一键转卖 ...

  3. 如何“阻止”程序员上班摸鱼?

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. 本篇文章纯属虚构,并没有科学依据.为了避免有人找我寻仇,您在转载或者转发的时候,一定要保留此声明.否则我会有生命危险.你的 ...

  4. 上班在群里摸鱼,逮到一个字节10年测试开发,聊过之后羞愧难当...

    老话说的好,这人呐,一旦在某个领域鲜有敌手了,就会闲得某疼.前几天我在上班摸鱼刷群的时候认识了一位字节测试开发大佬,在字节工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内有一定的地位. ...

  5. 互联网摸鱼日报(2022-09-21)

    互联网摸鱼日报(2022-09-21) InfoQ 热门话题 深化数字化转型的关键途径:为场景找技术 Linux之父:不出意外,Rust将出现在Linux 6.1版本中 只擅长构建软件是不够的,我们必 ...

  6. 上班摸鱼在群里吹牛B,逮到一个华为10年老Java开发,聊过之后收益良多...

    老话说的好,这人呐,一单在某个领域鲜有敌手了,就会闲得蛋疼.前几天我在上班摸鱼刷群的时候认识了一位阿里JAVA开发大佬,在华为工作了10年,因为本人天赋比较高,平时工作也兢兢业业,现在企业内有一定的地 ...

  7. 程序员的自我救赎,GitHub 摸鱼神器一览

    作者 | HelloGitHub-小鱼干 来源 | HelloGitHub 都知道 VSCode 有各种摸鱼小插件,边听云音乐.边在 IDE 斗地主,再来一个 NBA 直播,怎一个美滋滋了得.作为 V ...

  8. 这几个摸鱼神器,你怎么能不知道

    大家好,我是一行 明天就是今年的第一个工作日了,进入新的一年摸鱼元年 最近看到很多人在分享微软刚刚推出的一款摸鱼神器--Loaf 怎么摸鱼呢? 因为loaf这是一个 WinUI 3 App,它只有一个 ...

  9. 放假前的最后一次带薪摸鱼

    十一假期写的文章,竟然忘记发了.现在补上,还晚吗? 明天就是假期了,给小伙伴们聊聊我的一些心里话. 我在苏州的时候,国庆假期通常会选择回洛阳,坐上需要 15 个小时左右的绿皮火车,到了洛阳后再坐俩小时 ...

最新文章

  1. OpenCV学习系列教程第五篇:测试和提高代码的效率
  2. 13.PHP中循环结构之foreach循环语句(任务一)
  3. Py之logging:logging的简介、安装、使用方法之详细攻略
  4. 11.20 yum:自动化RPM包管理工具
  5. linux crm高可用网卡,Linux运维——pacemaker实现高可用-Go语言中文社区
  6. RHCS创建高可用集群apche服务器
  7. 201571030128/201571030118《小学四则运算练习软件软件需求说明》结对项目报告
  8. 【风马一族_xml】xmlp之dtd1
  9. 2017.9.27 书架 思考记录
  10. pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)
  11. CIO:让IT成为企业的一种竞争优势
  12. Halcon PDF文档(hdevelop_users_guide)学习总结之四——关于3D显示模式
  13. docker-compose 学习:部署 ThinkPHP 5 网站
  14. 关于抓包软件Fiddler的简单汉化
  15. 红帽linux6.8镜像下载,redhat8镜像下载
  16. 流水线激光打标视觉定位系统
  17. 2020年ROS机器人操作系统用户官方调查
  18. 电脑上有哪些特别好用的小工具?盘点4个PC工具,个个都精品
  19. Multi-Similarity Loss with General Pair Weighting for Deep Metric Learning 阅读笔记
  20. 如何在Android设备上识别读取美国驾照信息

热门文章

  1. 文心一言:人工智能模型的新星,挑战ChatGPT的智慧之战!
  2. 助力企业转型 华为云在创新路上加速奔跑
  3. PHP intl扩展实现汉字转拼音
  4. GC垃圾回收之CMS、G1
  5. Bbar和Tbar的使用
  6. centos7篇---禁用默认的驱动nouveau,安装cuda和cudnn
  7. 报道|香港科大EMBA苏州招生说明会暨体验课堂成功举办
  8. 【车辆CAN通讯系列】1 CAN通讯基础——物理层概述
  9. 2021年古城中学高考成绩查询,丽江古城第一高级中学2021年排名
  10. 按字节寻址和按字寻址