你们写的 NodeJS 程序有没有内存泄漏?

2017-09-20 13:54:27 +08:00
 doubleflower
从 Python 转 Node,写了三个微服务,尼玛每一个都出现了内存泄漏,连续运行几天就会 OOM。

以前 Python 也写过几个,运行个几年都没问题的。
8212 次点击
所在节点    Node.js
26 条回复
iugo
2017-09-20 14:04:57 +08:00
闭包用多了吧?

对象深复制了吗?

函数副作用太多了?
SPACELAN
2017-09-20 14:08:44 +08:00
我记得最近有个版本的 node 本身就有 ssl 上的内存泄露。。
keenwon
2017-09-20 14:15:57 +08:00
上代码
janxin
2017-09-20 14:34:15 +08:00
Python 也有内存泄漏啊...不过一般 wsgi 会自动进程重启
Node 内存泄漏挺常见的,不过你这么严重的换个最新版本看看,如果还有问题应该还是使用有问题
root787
2017-09-20 15:15:35 +08:00
可以试试 --max-old-space-size 这个参数。
meisky6666
2017-09-20 15:20:20 +08:00
神 tag
tongchia
2017-09-20 15:23:02 +08:00
@meisky6666 😆 神回复
ygjack
2017-09-20 15:48:38 +08:00
你用什么框架写微服务?
solee
2017-09-20 16:31:44 +08:00
我们公司用 node 写的很多服务,几个跑在一台阿里云上也。几年也没问题啊,上代码才是关键。
Yokira
2017-09-20 16:36:25 +08:00
之前用 4.4.6 版本的时候发现内存回收有问题,用了 v7.4.0 就舒服多了,代码一点没动。
misaka19000
2017-09-20 16:38:52 +08:00
同样会经常内存爆掉,问下大神频繁的使用 promise 模式会导致内存过高吗?
xream
2017-09-20 16:39:20 +08:00
懒得排查就设置 pm2 超内存自动重启…
catinsides
2017-09-20 16:41:35 +08:00
有一次循环变量忘改了,运行的时候感觉好慢,就去了趟厕所,回来的时候报内存泄漏。

嗯,就这一次。
doubleflower
2017-09-20 17:21:41 +08:00
代码有点多没法上。

目前暂时用一个 setInterval 检查 process.memoryUsage()看内存是否高到指定值就主动自杀重启避免用光内存。

以后有空了需要用正规方法看一下到底是哪个地方有泄漏。
xiaoniuback
2017-09-20 17:23:31 +08:00
排查一下是否有太多对象做缓存没有释放,或者一些队列没有释放,长期驻在老生代中,就会泄露
mooncakejs
2017-09-20 17:27:32 +08:00
node 某几个版本有内存泄露的 bug, 你搜搜。
不行上自动重启。
lianyue
2017-09-20 17:32:44 +08:00
想简单解决的话用 pm2 就好了
marvinwilliam
2017-09-20 17:57:42 +08:00
写了好多个服务,小的倒是会出现这个问题,大的到现在还没遇到.

然后你那个 M 之前的是什么数字....
kn007
2017-09-20 17:59:19 +08:00
my3157
2017-09-20 18:28:45 +08:00
之前有个项目, 怀疑内存泄露, 一直没找到原因, 后来, 在 配置了 pm2 自动重启, 内存到 1G 就自动重启, 一直到现在稳定运行~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/392238

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX