通過Ubuntu日志排查Node.js內存泄漏可按以下步驟進行:
journalctl查看系統級日志,過濾Node.js相關進程的異常記錄,如內存不足、進程崩潰等。journalctl -u <node_service_name> --no-pager | grep -i "error\|oom\|leak"
top、htop或pm2 monit查看Node.js進程的內存占用趨勢,若內存持續增長可能存在泄漏。process.memoryUsage()定期記錄內存數據到日志文件,分析內存增長模式。setInterval(() => {
const memory = process.memoryUsage();
console.log(JSON.stringify(memory, null, 2));
}, 5000);
heapdump生成快照:heapdump模塊,在可疑代碼段前后生成堆快照文件。const heapdump = require('heapdump');
heapdump.writeSnapshot('/tmp/snapshot.heapsnapshot');
--inspect參數,連接Chrome DevTools的Memory面板,加載快照并對比分析內存泄漏點(如未釋放的閉包、全局變量等)。global對象。removeListener。setInterval/setTimeout是否在不需要時調用clearInterval/clearTimeout。memwatch-next監控泄漏:artillery或ab模擬高并發請求,觀察內存是否在壓力下異常增長,結合日志定位泄漏觸發點。grep -i "memory\|leak\|gc" /var/log/syslog
grep "ERROR" /var/log/nodejs-app.log | wc -l
通過以上步驟,可結合系統日志、應用日志和內存分析工具,逐步定位Node.js內存泄漏的根源。