nodejs部署在多核机器上是否存在资源浪费
我们server端项目是集群部署,每个POD跑一个docker-nodejs应用,POD配置为CPU2核,内存16G。nodejs是单线程,那么这里是不是存在资源浪费呢。关于这个问题思考下。
应用情况
- app.js下起了多个http server,每个server监听一个端口。
这里虽然起了多个端口服务,但还是只占用机器的一个进程,同时nodejs是单线程,所以这里多个WEB服务本身也是跑在一个线程中,它们之间是存在资源竞争。
CPU浪费?
查看现网项目实际情况,发现CPU使用率很低,最高只到18%。
有无可能用到多核?
nodejs应用跑在单个进程下,但nodejs中有些命令比如child_process
,cluster
,worker_threads
,这些命令可以创建子进程,子进程可以跑在不同的线程中,这样就可以利用多核。因此是有存在多核使用的可能性的。
结论
- 单线程的nodejs应用,在多核机器上,存在资源浪费的可能性。但保险起见以实际负载情况为准
- 考虑到nodejs是有多进程使用的可能性,多核也没问题。