从 Python 转 Node,写了三个微服务,尼玛每一个都出现了内存泄漏,连续运行几天就会 OOM。
以前 Python 也写过几个,运行个几年都没问题的。
以前 Python 也写过几个,运行个几年都没问题的。
|
iugoSep 20, 2017
1
闭包用多了吧?
对象深复制了吗? 函数副作用太多了? |
|
SPACELANSep 20, 2017
2
我记得最近有个版本的 node 本身就有 ssl 上的内存泄露。。
|
|
keenwonSep 20, 2017
3
上代码
|
|
janxinSep 20, 2017
4
Python 也有内存泄漏啊...不过一般 wsgi 会自动进程重启
Node 内存泄漏挺常见的,不过你这么严重的换个最新版本看看,如果还有问题应该还是使用有问题 |
|
root787Sep 20, 2017
5
可以试试 --max-old-space-size 这个参数。
|
|
6
神 tag
|
|
tongchiaSep 20, 2017
7
@meisky6666 😆 神回复
|
|
ygjackSep 20, 2017
8
你用什么框架写微服务?
|
|
soleeSep 20, 2017
9
我们公司用 node 写的很多服务,几个跑在一台阿里云上也。几年也没问题啊,上代码才是关键。
|
|
yiziSep 20, 2017
10
之前用 4.4.6 版本的时候发现内存回收有问题,用了 v7.4.0 就舒服多了,代码一点没动。
|
|
misaka19000Sep 20, 2017 via Android
11
同样会经常内存爆掉,问下大神频繁的使用 promise 模式会导致内存过高吗?
|
|
xreamSep 20, 2017 via iPhone
12
懒得排查就设置 pm2 超内存自动重启…
|
|
catinsidesSep 20, 2017
13
有一次循环变量忘改了,运行的时候感觉好慢,就去了趟厕所,回来的时候报内存泄漏。
嗯,就这一次。 |
|
14
代码有点多没法上。
目前暂时用一个 setInterval 检查 process.memoryUsage()看内存是否高到指定值就主动自杀重启避免用光内存。 以后有空了需要用正规方法看一下到底是哪个地方有泄漏。 |
|
xiaoniubackSep 20, 2017
15
排查一下是否有太多对象做缓存没有释放,或者一些队列没有释放,长期驻在老生代中,就会泄露
|
|
mooncakejsSep 20, 2017
16
node 某几个版本有内存泄露的 bug, 你搜搜。
不行上自动重启。 |
|
lianyueSep 20, 2017 via iPhone
17
想简单解决的话用 pm2 就好了
|
|
marvinwilliamSep 20, 2017
18
写了好多个服务,小的倒是会出现这个问题,大的到现在还没遇到.
然后你那个 M 之前的是什么数字.... |
|
kn007Sep 20, 2017 via Android
19
有
|
|
my3157Sep 20, 2017
20
之前有个项目, 怀疑内存泄露, 一直没找到原因, 后来, 在 配置了 pm2 自动重启, 内存到 1G 就自动重启, 一直到现在稳定运行~~
|
|
springwarmSep 20, 2017
21
@marvinwilliam Out Of Memory
|
|
PastsongSep 20, 2017
22
内存泄漏是 NodeJS 的一部分,不爽不要写...
|
|
vebuqiSep 20, 2017
23
定时调一下 gc ?
|
|
isbaseSep 20, 2017 via Android
24
|
|
RickyWonngSep 26, 2017
25
之前写的高负载爬虫出现过内存炸的情况,但不是内存泄露,只是闭包引用导致的内存占用过高,调节一下负载,减少变量传递,注意点用字符串函数就可以了。
|
|
26
@RickyWonng 对,现在我发现了,我的三个服务只有一个是有泄漏的。
其中二个是头一天运行的内存都在 400M 以内,二天后慢慢上去,会稳定在 700M RSS,我的内存自杀阀值 512 设得太低了。(难道是和 V8 有关,运行次数多了后 JIT 优化代码导致内存使用增加)。 最后一个压图片的服务只有 200 行代码,太简单了所以没加内存高自杀设置,但运行十几天后内存爆掉了,用了 sharp 这个大 native 库,可能那个库有泄漏。 |