请教关于 nodejs 内存相关的问题

2017-02-20 11:51:25 +08:00
 veezzz
我写了一个网络服务,在本地做测试,每秒钟请求 20 次 ,连续请求了 11 个小时 。内存从最初一两个小时内维持在 177M 左右 ,到 11 小时后维持在在 191M 左右 ,这种情况是不是也可能是存在内存泄漏引起的 ?理论上不管运行多长时间都应该维持在 177m 左右? 测试时候的请求过程很平稳,没有极端情况。
2193 次点击
所在节点    Node.js
4 条回复
phrack
2017-02-20 12:03:36 +08:00
不写 js 。

你的测试时间还不够,跑几天再看。不过 177m 到 191m 波动应该是正常的。
AlphaTr
2017-02-20 20:21:08 +08:00
因为垃圾回收任务会阶段性执行,所以理论上会在一个范围内浮动
libook
2017-02-24 18:37:06 +08:00
我在 0.12 时代用 node 的时候遇到过内存泄漏问题,真是有内存泄露的话内存占用会持续攀升,直到把 V8 的额定内存空间( 64 位是 1.7G 左右)甚至系统内存空间用满。

你提供的数据差距太小,十几 M 的内存差距不好说明什么,最好做一下压测。

不知道你的压测是怎么测试的,一般压测的话都会是多线程高并发请求,比如 5 台机器每台异步发送请求,但台机器的请求频率从每秒 20 个递增到 2000 个,然后监控服务器和 node 进程的各项参数,如果有内存泄漏的话不需要那么长时间,只需要量就可以堆上来。

通常极少会看到 node 程序将内存用满,通常是 CPU 用满或者连接数用满,如果你的 node 程序不是很特殊的程序的话,你只需要在压测递增压力的时候观察一下是不是内存先于 CPU 吃满,如果是的话就说明可能有内存泄漏问题,没有的话基本上就不需要担心。

实际上在 node4.0 之后已经很少遇见内存泄漏问题了。

还有一个办法就是去 nodejs 官方的 github 上看对应版本目前 open 的 issue ,是否有和内存泄漏相关的问题。
veezzz
2017-02-24 19:11:36 +08:00
@libook 多谢解答,我增加了请求频率,然后打印了内存使用日志,通过日志画了图像,内存确实缓慢增长的,现在已经解决这个问题了

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

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

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

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

© 2021 V2EX