问题描述
fastgpt V4.9.3 运行过程中发现每隔一段时间容器发生重启
进一步查看返现内容持续上升,达到设置阀值,触发重启
排查方案:
服务端增加监控,获取 profile 文件,导入插件,分析内存泄漏原因。
配置 docker 开启 debug 模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 获取dump文件
cd ~/snapshots/output docker cp node_modules fastgpt-2:/tmp/ docker cp take-memory-snapshot.js fastgpt-2:/tmp/
docker exec -it fastgpt-2 sh kill -USR1 1
Debugger listening on ws://127.0.0.1:9229/a1111a16-b8fd-4348-9e7d-01aae1a70fd5 For help, see: https://nodejs.org/en/docs/inspector
cd /tmp node take-memory-snapshot.js > heap-$(date +%s).heapsnapshot
Go to chrome://inspect Click on “Open dedicated DevTools for Node” Go to Memory tab Press load profile button Load all the heap snapshots you want to compare 工程代码路径:20上/home/albert/snapshots/output
|
分析内存泄漏原因
下载后会得到 profile-xxxxxxxxxxxxx.heapsnapshot 文件
导入到 chrome://inspect 插件中进行分析
找到内存泄漏的对象,分析泄漏路径,发现是因为工作流中的节点缓存没有清理,导致内存泄漏。
解决办法
对 settimeout 做了清理,继续做测试,内存稳定在 1 个多 G