为什么节点使用100%的CPU?

时间:2011-07-04 13:18:29

标签: node.js express

我正在使用Express Web框架和Node.js。

我正在用ab执行一个简单的测试:

ab -n 1000 -c 100 http://127.0.0.1:3000/

我正在使用Express的默认中间件,只有一个get()

app.get('/', function(req, res){
  res.send("hello");    
});

如何以100%的速度加载CPU,是不是真的异步?

谢谢你

1 个答案:

答案 0 :(得分:3)

仅仅因为某些东西是异步的,并不意味着它无法使用所有可用的处理资源。我们来看看你的样本服务器:

// when you get a request for "/", perform the 
// following function as quickly as you can.
app.get('/', function(req, res) {  

  // this  is the function to perform. It is CPU 
  // bound when serving a client *on the same machine*.
  res.send("hello");    
});

当您请求ab向您的示例应用程序发出100个并发请求时,您显然会飙升100%的CPU利用率,因为节点正在尝试尽快满足这些请求。仅仅因为它是异步的,并不意味着它不会像你告诉它那样努力工作。