我是在 BAE 部署的 Node.js,内存是 256M。最近发现我的 Node.js 部署一开启就把内存占满了。我把内存加到 512M 后,内存使用也超过 300M。
然后我用 process.memoryUsage()
查看,内存用量是这样的:
heaptotal: 28.53MB heapUsed: 12.88MB rss: 25.86MB
然后我就不明白这 300M 的内存使用是怎么来的了。。。求高手解答
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进程,但这几个进程工作在一个核上不就失去意义了吗
@kingapple 去百度一下。
@alsotang cpu内核都是分时处理任务,不会被阻塞的,只是在繁忙的时候速度由于任务切换回变慢,一个核一个线程其实没法充分利用cpu的计算能力,web请求大部分都是io占主要,考虑到增加并发处理能力,还是得多开点线程,nodejs的任务队列的大小事有限制的。
bae 可以用cluster吗?
@dlutwuwei node 的模型跟其他语言的多线程模型不一样,所以你的这个说法“一个核一个线程其实没法充分利用cpu的计算能力,web请求大部分都是io占主要,考虑到增加并发处理能力”是不成立的。