1
nomagick 2022-11-04 16:15:37 +08:00
正常的,v8 不愿意把内存释放给操作系统,倾向于自己管理,这有个上限,默认是不到 2G 来着
|
2
jchnxu 2022-11-04 16:19:05 +08:00
snapshot 一下,看哪些对象没有被释放?
|
3
helloriver952 OP @nomagick 有没有办法让他释放呢,一个服务器部署许多个程序,不释放掉太卡了。
尝试使用了 jemalloc 好像没什么用,不知道是不是姿势不对 我看 node 下边有 issue 通过 jemalloc 解决了此问题 |
4
helloriver952 OP @jchnxu 堆内存 189.38M ,应该不是程序内变量没有释放
|
5
nomagick 2022-11-04 16:56:52 +08:00
设置一下--max-old-space-size ,再不行就是 c++世界什么地方泄漏了,检查一下有没有用原生库之类的
|
6
helloriver952 OP @nomagick 谢谢 确实用到了 一些 c 和 c++的库 通过 child_process 调用的 我仔细排查一下
|
7
qfdk 2022-11-04 20:18:52 +08:00 via iPhone
干啥的啊 是不是有定时任务? 网络请求? graphql 这样的东西 fetch ?
|
8
gen900 2022-11-05 09:30:58 +08:00 via iPhone
去掉怀疑的模块,一个个试。看内存有没有降下来
|
9
helloriver952 OP @gen900 目前我在这样做呢
|
10
helloriver952 OP @qfdk 应该不是吧
|
11
helloriver952 OP 经过排查最终发现是 node-canvas 的问题 可能是 c++内存泄露 https://github.com/Automattic/node-canvas/issues/1974 目前未得到解决
|