nodejs зависает с экспресс-статическими файлами

Проблема: Если я закомментирую строку express['static'] , код будет работать отлично. Если я включу его (или изменю порядок), приложение некоторое время зависает, прежде чем ответить.

Воссоздать: Запустите приложение, запустите браузер и перейдите по адресу 127.0.0.1:51783. Постоянно обновляйте страницу (или используйте curl), консоль выдаст примерно такой вывод:

GET / 1 ms

Затем, когда истечет время ожидания и будет отправлено 15 запросов, сервер перестанет отвечать, и вы получите следующее:

Server Now Unresponsive but requests queued
GET / 35549 ms

app.js

var http = require('http');
var express = require('express');
var app = express.createServer();
app.use(express.logger({ format: '\x1b[1m:method\x1b[0m \x1b[33m:url\x1b[0m :response-time ms' }));
app.use(express.bodyParser());
app.use(express['static'](__dirname + '/')); //Comment me and all works perfectly!
app.listen(51783);
http.globalAgent.maxSockets = 500; //doesn't help
setTimeout(function(){
  console.log('Server Now Unresponsive but requests queued');
  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].forEach(function(item){
    http.request({host:'http://cnn.com', port:80, path:'/null', method:'GET'}, function(res){
    }).on('error', function(e){});
  });

},5000);
6
задан chillbo 29 May 2012 в 18:21
поделиться