Temps de réponse Node.JS
Jeté Node.JS sur une instance AWS et les mettait à l'épreuve la demande de fois, a obtenu des résultats intéressants.
J'ai utilisé les méthodes suivantes pour le serveur:
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('Hello World');
res.end();
}).listen(8080);
J'ai une moyenne de 90ms retard à ce serveur, mais le total de la demande prend environ 350+ms. Évidemment, beaucoup de temps est gaspillé sur la boîte. J'ai fait en sorte que le DNS a été mis en cache avant le test.
J'ai fait un Apache bench sur le serveur avec un cocurrency de 1000 - il fini de 10 000 demandes en 4,3 secondes... ce qui signifie une moyenne de 4,3 millisecondes.
Mise à JOUR: Juste pour sourire, j'ai installé Apache + PHP sur la même machine et fait un simple "Hello World" echo et a obtenu un 92ms temps de réponse en moyenne (deux de plus de ping).
Est-il un paramètre quelque part qui me manque?
source d'informationauteur Jonathan
Vous devez vous connecter pour publier un commentaire.
Chrome Developer Tools est un bon moyen d'étudier avant la fin de la performance, il vous donne une estimation très approximative de serveur réel les horaires /charge cpu. Si vous avez ~350 ms temps la demande totale dans les outils de dev, de soustraire de ce numéro de la recherche DNS + Connexion + Envoi + Réception, puis de soustraire aller-retour du temps (90 ms?) et après que vous avez de la première estimation. Dans votre cas, j'attends réelle demande du temps pour être sous-ordre de la milliseconde. Essayez d'exécuter ce code sur le serveur:
Basé sur
ab
résultats, vous devez estimer la moyenne d'envoyer+demande+de recevoir le temps d'être à plus de 4,2 ms ( 4200 ms /10000 req) (avez-vous l'exécuter sur le serveur? ce simultanéité?)J'ai vraiment hate de répondre à mes propres questions, mais je veux passer le long de ce que j'ai découvert avec les futurs lecteurs.
tl;dr: Il y a quelque chose de mal avec res.write(). Utilisation express.js ou res.fin()
Je viens de recevoir par le biais de la conduite d'un tas de tests. J'configuration de plusieurs types de Nœud de serveur et mélangés dans des choses comme le PHP et Nginx. Voici mes conclusions.
Comme indiqué précédemment, avec l'extrait de j'ai inclus ci-dessus, je perdais autour de 250ms/demande, mais l'Apache repères n'ont pas répliquer que les questions. Puis, j'ai continué à faire un test PHP et a obtenu des résultats allant de 2ms - 20ms plus de ping... une grande différence.
Ce qui a poussé un peu plus de recherche, j'ai commencé un serveur Nginx et mandaté le nœud à travers elle, et en quelque sorte, que comme par magie changé la réponse de 250ms à 15ms plus de ping. J'étais au même niveau que dans le script PHP, mais ça, c'est très déroutant résultat. Habituellement, les tronçons supplémentaires permettrait de ralentir les choses.
Intrigué, j'ai fait un express.js serveur en tant que bien et quelque chose d'encore plus intéressant qui s'est passé, le ping était 2ms sur son propre. J'ai creusé autour de la source pour un certain temps et a remarqué qu'il manquait une
res.write()
commande, plutôt, il est allé directement à lares.end()
. J'ai commencé un autre serveur de retirer le "Hello World" dures.write
et de l'ajouter à lares.end
et étonnamment, le ping était 0ms plus de ping.J'ai fait quelques recherches sur ce, je voulais voir si c'était un problème connu et est venu à travers ce DONC, la question, qui avait exactement le même problème. nodejs vitesse de réponse et de nginx
Dans l'ensemble, intresting choses. Assurez-vous d'optimiser vos réponses et de les envoyer tous à la fois.
Bonne chance à tout le monde!