2011-01-12 20 views
5

Aktualnie testuję wydajność między Node.js i Apache.Testowanie wydajności Apache i NodeJs

Co chcę udowodnić to:

  • Apache jest wolniejsza, ponieważ wymaga dużo więcej niż nitki przełączniki node.js który wykorzystuje pojedynczy gwintowany Event-Loop.
  • Apache potrzebuje o wiele więcej RAM/Connection w porównaniu z Node.js, który używa epoll.

To oznacza, że ​​to, co chcę, aby przetestować to:

  1. Wnioski/Second za CPU
  2. Połączenia za RAM

Ok to co chcę zrobić! Ale pytanie brzmi JAK powinienem to zrobić? Dla zapytania/drugiego testu mogłem po prostu użyć Apache Benchmark (ab) (Ale czy jest nawet odpowiedni dla Node.js?) A najważniejsze pytanie brzmi: Jak mogę przetestować Connections/RAM?

Odpowiedz

4

Połączenia/sekundę: Zrobiłem ten test niedawno z prostym serwerem node.js "hello world" i uzyskałem ~ 9 000 żądań na sekundę na rdzeń procesora. (Używanie ab, btw. Testowanie na czterordzeniowym, czterordzeniowym, Xeon linux boxie 2,5 GHz).

Połączenia na pamięć RAM: tu są dwa numery, na których Ci zależy. Pamięć bazowa (pamięć wymagana bez połączeń) i pamięć na połączenie. Przetestowałem to na moim Mac Pro, kręcąc prostym serwerem/klientem, który utrzymuje otwarte połączenia HTTP. Uruchomiłem polecenie "top", aby obejrzeć użycie pamięci. Przy zerowych połączeniach węzeł posiadał 14MB ROZMIARÓW. Następnie, gdy klient uruchomił i utrzymywał 2000 równoczesnych połączeń otwartych, RSIZE wzrosło do 24 MB. Tak więc ~ 5MB/1000 połączeń.

Kiedy otrzymasz numer Węzła i Apache, możesz je opublikować tutaj? Jestem też ciekawy.

+0

Z ab uzyskać ~ 6300 R/S przy współbieżności 100 na 2,5-calowym dualcore K8 AMD. Odnośnie skryptu Connections/Ram i wykorzystanego w tautologiach -> github.com/tautologistics/node_loadtest, w którym osiągam niedorzeczne 61000 połączeń z około 250 MB. To, co potrzebuję wiedzieć, to metoda testowania maksymalnej współbieżności/pamięci RAM z apache. Jakieś sugestie??? Aha, czy mógłbyś opublikować skrypt, w jaki sposób osiągnąłeś 5MB/1000 połączeń? – user572715

17

"Chcę udowodnić" jest bardzo błędnym podejściem podczas robienia ocen. Nic nie udowadniasz, mierzysz rzeczywistą wydajność. Możesz lub nie być zaskoczony wynikiem, ale naprawdę musisz zacząć od "Zobaczmy, co to może zrobić".

Najwyraźniej ze wszystkich benchmarków, jakie widziałem, węzeł pojawia się jako pierwszy pod względem prędkości początkowej, ale wykorzystuje WIĘCEJ pamięci, a następnie apache, więc pojawia się twój "dowód".