node单线程怎么能用到100%以上CPU?

How can node use more than 100% CPU if it is single threaded?

我正在 运行 设置 express.js 服务器。当我发送一些负载时,cpu 使用率峰值超过 140%。

我知道,由于我 运行 安装服务器的系统有 4 个核心,所以它也可以达到 400%。

我的问题是:

  1. 尽管是单线程,node.js 应用程序如何消耗超过 100%?
  2. 要提高性能,我应该 运行 服务器处于集群模式吗?目前有很多请求处于 http_request_waiting 状态。

尽管该节点是一个 single-threaded 模型,可以在单个线程上有效地工作以服务于请求。但是,它的底层 IO 模型是 multi-threaded。有两个libuv组件在这个过程中起作用,一个是event-pool,另一个是thread-pool,这个线程池分配了阻塞操作,如文件读取、数据库查询和IO操作。