2012-05-04 2 views
1

Jouer et essayer de voir comment Node.js rapide peut servir un fichier statique à partir du disque en utilisant banc apacheNode.js Banc d'essai apache

ab -r -n 10000 -c 1000 http://server:8080/loadtestfile.txt 

J'ai problème ulimit sur Ubuntu 11.04 x64 VM VirtualBox sur OSX Lion

(node) Hit max file limit. Increase "ulimit - n" 

Je ne peux plus augmenter la limite. Est-ce la bonne façon de forcer node.js à recharger le fichier à partir du disque pour servir chaque requête HTTP? Comment puis-je augmenter la limite au-delà de 1000000?

demande cURL fonctionne:

curl http://server:8080/loadtestfile.txt 

code

var sys = require('sys'), 
http = require('http'), 
fs = require('fs'), 
index; 

http.createServer(function(request, response) { 

fs.readFile('./loadtestfile.txt', function (err, data) { 

    response.writeHeader(200, {"Content-Type": "text/plain"}); 
    response.write(data); 
    response.end(); 
}); 

}).listen(8080); 

Répondre

1

Idéalement, votre application irait dans les limites qui lui sont données; il doit gérer correctement accept(2) renvoyant une condition d'erreur avec errno(3) définie sur EMFILE ou ENFILE en n'essayant pas d'accepter une autre connexion tant qu'une connexion existante n'est pas morte.

Cependant, la résolution de l'application pour gérer ce cas avec élégance peut être difficile; Si vous voulez simplement augmenter vos limites pour faire plus de tests, il y a deux possibilités.

  • Modifier /etc/security/limits.conf pour augmenter la limite difficile pour votre compte utilisateur pour la limite nofile à quelque chose de beaucoup plus élevé et puis connectez-vous à votre compte utilisateur à nouveau.

  • Faites vos tests dans un shell racine; vous pouvez vous connecter directement en tant que root ou utiliser sudo -s ou su pour démarrer le shell, puis exécuter la commande ulimit -n à partir de là.

La difficulté est parce que hausser les limites nécessite un accès administratif. (Lorsque vous avez quelques centaines d'utilisateurs sur le système en même temps, vous voulez les garder bien jouer ...)

Cependant, je vais deviner que votre application va également courir dans le système- large nombre maximal de fichiers ouverts limite; cela est configuré via /proc/sys/fs/file-max. Augmenter cette limite aussi, si l'application se plaint.

+0

merci pour cela :) – portoalet

Questions connexes