Почему узел использует 100% процессорного времени? - PullRequest
0 голосов
/ 04 июля 2011

Я использую веб-фреймворк Express и 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%, разве не асинхронно?

СПАСИБО

1 Ответ

3 голосов
/ 14 июля 2011

То, что что-то является асинхронным, не означает, что оно не может использовать все доступные ресурсы обработки.Давайте посмотрим на ваш пример сервера:

// 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%, потому что узел пытается удовлетворить эти запросытак быстро, как это возможно.Тот факт, что он асинхронный, не означает, что он не будет работать так усердно, как он может делать то, что вы говорите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...