2011-01-12 18 views
5

Ich teste gerade die Leistung zwischen Node.js und Apache.Leistungstest Apache vs NodeJs

Was will ich beweisen ist:

  • Apache langsamer ist, weil es viel mehr Themen-Schalter als Node.js benötigt, die eine Single-Threaded-Ereignis-Schleife verwendet.
  • Apache benötigt viel mehr RAM/Verbindung im Vergleich zu Node.js, die epoll verwendet.

Das bedeutet, dass das, was ich testen möchte, ist:

  1. Requests/Sekunde pro CPU
  2. Verbindungen pro RAM

Ok das ist, was ich tun will! Aber die Frage ist: WIE soll ich das tun? Für den Request/second-Test könnte ich einfach den Apache Benchmark (ab) verwenden (ist aber auch für Node.js geeignet?) Und die größte Frage ist: Wie kann ich die Connections/RAM testen?

Antwort

4

Verbindungen/Sekunde: Ich habe diesen Test kürzlich mit einem einfachen "Hallo Welt" node.js Server, und erhielt ~ 9.000 Anfragen/Sekunde pro CPU-Kern. (Mit ab, btw. Testen auf einer 2,5 GHz, Quad-Core, Xeon Linux Box).

Verbindungen pro RAM: Es gibt zwei # hier ist Ihnen wichtig. Baseline-Speicher (Arbeitsspeicher ohne Verbindungen) und Speicher pro Verbindung. Ich habe das auf meinem Mac Pro getestet, indem ich einen einfachen Server/Client hochgefahren habe, der HTTP-Verbindungen offen hält. Ich habe den Befehl 'top' ausgeführt, um die Speichernutzung zu überwachen. Bei null Verbindungen hatte der Knoten eine 14MB RSIZE. Dann, wenn der Client 2000 gleichzeitige Verbindungen geöffnet hat, wuchs RSIZE auf 24MB. Also ~ 5MB/1000 Verbindungen.

Wenn Sie # für Node und Apache erhalten, können Sie sie hier veröffentlichen? Ich bin auch neugierig.

+0

Mit ab bekomme ich ~ 6300 R/S mit einer Gleichzeitigkeit von 100 auf einem 2.5 GHz Dualcore K8 AMD. Bezüglich der Connections/Ram habe ich Tautologics Script benutzt -> github.com/tautologistics/node_lostest, wo ich mich um lächerliche 61000 Connections mit ca. 250MB kümmere. Was ich wissen muss, ist eine Methode, um die maximale Nebenläufigkeit/Ram mit Apache zu testen. Irgendwelche Vorschläge??? Oh, und könntest du dein Skript schreiben, wie hast du 5MB/1000 Verbindungen erreicht? – user572715

17

"Ich will beweisen" ist eine sehr falsche Einstellung beim Benchmarking. Sie beweisen nichts, Sie messen die tatsächliche Leistung. Sie werden vielleicht von dem Ergebnis überrascht sein oder nicht, aber Sie müssen wirklich mit dem "Lasst uns sehen, was dieses Ding tun kann" beginnen.

Offenbar, von allen Benchmarks, die ich gesehen habe, kommt Knoten in Bezug auf die rohe Geschwindigkeit zuerst, aber verwendet mehr Speicher als Apache, so geht es Ihren "Beweis".