Node.js 一开启内存就到 300M 多
发布于 10 年前 作者 alfredduck 9028 次浏览 最后一次编辑是 8 年前

我是在 BAE 部署的 Node.js,内存是 256M。最近发现我的 Node.js 部署一开启就把内存占满了。我把内存加到 512M 后,内存使用也超过 300M。 然后我用 process.memoryUsage() 查看,内存用量是这样的:

heaptotal: 28.53MB heapUsed: 12.88MB rss: 25.86MB

然后我就不明白这 300M 的内存使用是怎么来的了。。。求高手解答

13 回复

nodejs什么版本?

按虚拟内存算的?

v0.10.18

我用的256M就是虚拟内存吧,用 os.totalmem() 能查到系统总内存是128898.66MB

貌似找到原因了,我在服务器上启动node时,worker进程(用了cluster)有上千个,这足够把内存撑爆了。。。

BAE好强,能虚拟出那么多CPU cores

@j4cnodejs nodejs不管cpu多少核,起几个worker就起几个nodejs进程,一个进程一个核我感觉还是浪费了,一个核应该可以支撑好几个nodejs进程

@j4cnodejs bae是啥?服务器软件么?

@dlutwuwei 一个核应该可以支撑好几个nodejs进程,但这几个进程工作在一个核上不就失去意义了吗

@alsotang cpu内核都是分时处理任务,不会被阻塞的,只是在繁忙的时候速度由于任务切换回变慢,一个核一个线程其实没法充分利用cpu的计算能力,web请求大部分都是io占主要,考虑到增加并发处理能力,还是得多开点线程,nodejs的任务队列的大小事有限制的。

bae 可以用cluster吗?

@dlutwuwei node 的模型跟其他语言的多线程模型不一样,所以你的这个说法“一个核一个线程其实没法充分利用cpu的计算能力,web请求大部分都是io占主要,考虑到增加并发处理能力”是不成立的。

回到顶部