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

type
status
slug
date
summary
tags
category
password
icon
真正的问题了有很多种,这里只是讲一下解决问题的方法和思路
这类场景不多,但总是会有,遇到了就是学习和实操的机会
实际上也没有很难,了解基础,借助ai工具和排查工具,一样可以解决问题

CPU100%

原因:一般是死循环、死锁、耗时计算(低性能、高复杂度的算法)和频繁的Full GC
基础知识:理解进程、线程、cpu时间片
抽象简述:通过工具分析进程线程状态(或者链路日志),找到频繁执行的代码位置,修复异常(可能是边界没有测试到)
 

Java

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

node

🗒️
Node CPU100% 问题分析解决
prof工具,找到ticks占用最多的代码方法,行数,然后修复异常

OOM(内存溢出)

原因:Out Of Memory, 简单地说就是内存消耗完了,分配不出内存了。内存泄漏是导致OOM的最常见的因素。OOM导致的直接后果就是进程Crash掉。
这里说自动回收垃圾的语言比如java、node
基础知识:内存分配、堆栈
抽象简述:链路日志(退出前那会)或者通过对内存dump转存,分析大对象的依赖关系,找到问题代码,修复异常

Java

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

Node

 
node 导出dump 似乎有点拉,要提前把进程连接到其他平台,然后通过信号导出 dump?——有点呆的感觉
上一篇
diebian切换镜像源 安装基础软件
下一篇
CPU每秒多少次运算
Loading...
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP