Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

内存泄露? #363

Open
luckyyyyy opened this issue Jan 13, 2020 · 13 comments
Open

内存泄露? #363

luckyyyyy opened this issue Jan 13, 2020 · 13 comments
Labels
help wanted Extra attention is needed

Comments

@luckyyyyy
Copy link

这是我路由器上的截图

image

@luckyyyyy
Copy link
Author

等下次发现后 我再来看一下是怎么回事 为了不影响上网 我暂时restart了

@Xun66
Copy link

Xun66 commented Jan 22, 2020

等下次发现后 我再来看一下是怎么回事 为了不影响上网 我暂时restart了

我在Ubuntu这边运行刚启动没多久占用也是100+M左右,我感觉你这130M好像也没差多少,你刚启动前几天和一段时间后差别明显吗

@luckyyyyy
Copy link
Author

等下次发现后 我再来看一下是怎么回事 为了不影响上网 我暂时restart了

我在Ubuntu这边运行刚启动没多久占用也是100+M左右,我感觉你这130M好像也没差多少,你刚启动前几天和一段时间后差别明显吗

不会吧,就这样一个 proxy 什么情况下会需要130M

下面是我家里的x86

image

@luckyyyyy
Copy link
Author

要么就是在 ARM 下 node会有问题 x86 下没有问题

下次发现在抓吧 过年了 下次一定dump出来看一眼

@Xun66
Copy link

Xun66 commented Jan 22, 2020

要么就是在 ARM 下 node会有问题 x86 下没有问题

下次发现在抓吧 过年了 下次一定dump出来看一眼

看你描述这100+M应该不是很常出现吧,说明平常在ARM上也没这么多?我的Ubuntu昨天看是100+,现在过了一天变回38M了,我感觉确实有一点波动,运行个定时命令抓一下看看
watch -n 300 'grep VmSize /proc/PID/status >> node_rem.log'

@luckyyyyy
Copy link
Author

要么就是在 ARM 下 node会有问题 x86 下没有问题
下次发现在抓吧 过年了 下次一定dump出来看一眼

看你描述这100+M应该不是很常出现吧,说明平常在ARM上也没这么多?我的Ubuntu昨天看是100+,现在过了一天变回38M了,我感觉确实有一点波动,运行个定时命令抓一下看看
watch -n 300 'grep VmSize /proc/PID/status >> node_rem.log'

现在路由器在公司 等过完年回去看一下 等出现了直接dump出来分析应该更快 还没有太多的规律 前些天我看过 没有100M+

@CareyWang
Copy link

内存最多占用到了500M,日益增长。现在pm2设置占用超过100M重启。

@nondanee
Copy link
Owner

nondanee commented Feb 3, 2020

内存占用大的同学是不是之前下载了很多歌?

@CareyWang
Copy link

内存占用大的同学是不是之前下载了很多歌?

只用来在线听,没下载过。现在100M自动重启大概是这个样子,一天重启一两次左右。
Snipaste_2020-02-03_23-19-57

@luckyyyyy
Copy link
Author

@nondanee 应该还是是有什么地方有泄漏 有机会我会dump一份做分析

nondanee added a commit that referenced this issue Feb 8, 2020
@nondanee
Copy link
Owner

nondanee commented Feb 8, 2020

@luckyyyyy
我目前只想到或许因为 cache 太久没回收会占内存特别大

因为 promise 执行结束后状态是确定的,方便起见我 cache 了整个 promise
可能存下来 promise resolve 也包含了执行的上下文,不仅仅是最后的结果,上下文占了内存

所以我怀疑是下载导致的
因为客户端下载要校验 md5,而没有正确 md5 的代理里会预下载整个文件计算
但可能上下文会比较大 (虽然下载也是 stream pipe 的,不全进内存)

而且这个计算文件 md5 会缓存 7 天,一直不会回收,可能导致内存降不下来
我想其他如调搜索 api 的 promise 上下文应该没多大吧,(其他的缓存都是 30 分钟)

但我确实只关心最后的结果
(不确定 promise 的上下文到底占不占内存。。。)
现在改成执行完毕后更新 cache,只存结果,希望能解决

const done = (status, result) => cache[key].execution = Promise[status](result)
if (!cache[key] || cache[key].expiration < Date.now())
cache[key] = {
expiration: Date.now() + live,
execution: job(parameter)
.then(result => done('resolve', result))
.catch(result => done('reject', result))
}

@nondanee nondanee added the help wanted Extra attention is needed label Feb 8, 2020
@luckyyyyy
Copy link
Author

luckyyyyy commented Feb 8, 2020 via email

@hietsusama
Copy link

内存最多占用到了500M,日益增长。现在pm2设置占用超过100M重启。

大佬想问一下PM2超过占用应该加什么参数?我这边尝试不成功 感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants