程序CPU100% | 内存泄漏通用排查步骤

真正的问题了有很多种,这里只是讲一下解决问题的方法和思路

这类场景不多,但总是会有,遇到了就是学习和实操的机会

实际上也没有很难,了解基础,借助ai工具和排查工具,一样可以解决问题

CPU100%

原因:一般是死循环、死锁、耗时计算(低性能、高复杂度的算法)和频繁的Full GC

基础知识:理解进程、线程、cpu时间片

抽象简述:通过工具分析进程线程状态(或者链路日志),找到频繁执行的代码位置,修复异常(可能是边界没有测试到)

Java

  1. top查看进程
  2. top -H -n 1 -p PID查看线程
  3. jstack -l PID > ./jstack.log 命令输出进程的线程文件,找到文件进行分析

其他工具

Arthas

node

Node CPU100% 问题分析解决

prof工具,找到ticks占用最多的代码方法,行数,然后修复异常

OOM(内存溢出)

原因:Out Of Memory, 简单地说就是内存消耗完了,分配不出内存了。内存泄漏是导致OOM的最常见的因素。OOM导致的直接后果就是进程Crash掉。

这里说自动回收垃圾的语言比如java、node

基础知识:内存分配、堆栈

抽象简述:链路日志(退出前那会)或者通过对内存dump转存,分析大对象的依赖关系,找到问题代码,修复异常

Java

JVM配置参数,OOM时候自动导出heap dump,利用jprofile、Eclipse MAT或者其他工具分析大对象等

其他工具

Arthas

Node

node 导出dump 似乎有点拉,要提前把进程连接到其他平台,然后通过信号导出 dump?——有点呆的感觉

Node.js — Using Heap Snapshot

Node应用内存泄漏分析的方法论与实战_Node.js 性能平台(Node.js)-阿里云帮助中心

Minimize Heap Allocations in Node.js | AppSignal Blog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值