nodejs部署在多核机器上是否存在资源浪费

我们server端项目是集群部署,每个POD跑一个docker-nodejs应用,POD配置为CPU2核,内存16G。nodejs是单线程,那么这里是不是存在资源浪费呢。关于这个问题思考下。

应用情况

  • app.js下起了多个http server,每个server监听一个端口。

这里虽然起了多个端口服务,但还是只占用机器的一个进程,同时nodejs是单线程,所以这里多个WEB服务本身也是跑在一个线程中,它们之间是存在资源竞争。

CPU浪费?

查看现网项目实际情况,发现CPU使用率很低,最高只到18%。

有无可能用到多核?

nodejs应用跑在单个进程下,但nodejs中有些命令比如child_processclusterworker_threads,这些命令可以创建子进程,子进程可以跑在不同的线程中,这样就可以利用多核。因此是有存在多核使用的可能性的。

结论

  • 单线程的nodejs应用,在多核机器上,存在资源浪费的可能性。但保险起见以实际负载情况为准
  • 考虑到nodejs是有多进程使用的可能性,多核也没问题。