node单线程怎么能用到100%以上CPU?
How can node use more than 100% CPU if it is single threaded?
我正在 运行 设置 express.js 服务器。当我发送一些负载时,cpu 使用率峰值超过 140%。
我知道,由于我 运行 安装服务器的系统有 4 个核心,所以它也可以达到 400%。
我的问题是:
- 尽管是单线程,node.js 应用程序如何消耗超过 100%?
- 要提高性能,我应该 运行 服务器处于集群模式吗?目前有很多请求处于 http_request_waiting 状态。
尽管该节点是一个 single-threaded 模型,可以在单个线程上有效地工作以服务于请求。但是,它的底层 IO 模型是 multi-threaded。有两个libuv组件在这个过程中起作用,一个是event-pool,另一个是thread-pool,这个线程池分配了阻塞操作,如文件读取、数据库查询和IO操作。
我正在 运行 设置 express.js 服务器。当我发送一些负载时,cpu 使用率峰值超过 140%。
我知道,由于我 运行 安装服务器的系统有 4 个核心,所以它也可以达到 400%。
我的问题是:
- 尽管是单线程,node.js 应用程序如何消耗超过 100%?
- 要提高性能,我应该 运行 服务器处于集群模式吗?目前有很多请求处于 http_request_waiting 状态。
尽管该节点是一个 single-threaded 模型,可以在单个线程上有效地工作以服务于请求。但是,它的底层 IO 模型是 multi-threaded。有两个libuv组件在这个过程中起作用,一个是event-pool,另一个是thread-pool,这个线程池分配了阻塞操作,如文件读取、数据库查询和IO操作。