“Node 节点内存泄漏”通常指 Node.js 进程 内存泄漏,也可能指 Kubernetes Node 节点 上系统内存泄漏。我先按最常见的 Node.js 应用内存泄漏来讲,最后补充 K8s Node 的情况。
观察指标:
process.memoryUsage()setInterval(() => {
console.log(process.memoryUsage());
}, 5000);
最常用手段。
--inspectnode --inspect app.js
然后用 Chrome:
chrome://inspect重点看:
npm i heapdump
const heapdump = require('heapdump');
setInterval(() => {
heapdump.writeSnapshot(`/tmp/heap-${Date.now()}.heapsnapshot`);
}, 60000);
对比多个快照,找“只增不减”的对象。
emitter.on('data', handler); // 没有 off
setInterval(...) // 永远不 clear
function leak() {
const big = new Array(1e6);
return () => big;
}
global.cache = {};
global.cache[Date.now()] = data;
npm i -g clinic
clinic heap-profiler -- node app.js
自动分析:
prom-client + GrafanaheapUsed如果你指的是 K8s Node:
kubectl top node
kubectl top pod -A
kubectl describe node <node>
kubectl get pods -A -o wide
为了更精准帮你,可以补充:
我可以给你具体排查命令或代码级定位方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。