Jak Mogę przetestować węzeł oparty na websocket.aplikacja js?

Testuję skalowalność aplikacji websockets, którą napisałem używając socket.io i węzeł.js. Chcę przetestować i porównać wyniki. Jakich narzędzi mogę użyć?

Do tej pory przyjrzałem się wsbench ale chciałbym zbadać wszelkie alternatywy.

Author: kanaka, 2011-04-23

4 answers

Jest bardzo prosty Socket.IO implementacja klienta dla węzła.js. Nie jest to rzeczywiste narzędzie benchmarkingu, ale wie o Socket.IO protokół.

Używając tego, dość łatwo jest napisać klienta, który współdziała z Twoją aplikacją.

 4
Author: Stéphan Kochen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-24 13:13:34

Spędziłem dzień patrząc na węzeł benchmarking.js i socket.io, próbowałem wielu rozwiązań, okazało się, że nie można użyć wsbench do benchmarku socket.io ponieważ socket.io ma swój własny protokół, który musi być zaadresowany, aby nawiązać połączenia.

Po wypróbowaniu kilku innych rozwiązań bez powodzenia skończyłem z użyciem socket.io-benchmark i właśnie trafiłem 60 000 połączeń na M1.duża instancja EC2 wykorzystująca tylko jeden rdzeń z zapasowym miejscem. W moim przypadku chciałem tylko zmierzyć the overhead of the socket.io połączenia (co wymagało od mnie skomentowania jakiegoś kodu W socket.io-benchmark), więc nie miałem żadnych wiadomości wysyłanych między Klientem a serwerem.

Interesujące było to, że klienci zabierali więcej procesora i pamięci niż serwer. Więc upewnij się, że serwer klienta, z którego korzystasz, jest beefy, użyłem EC2 c1.xlarge i miał dużo miejsca na głowie. Podzieliłem ten test na 6 pojedynczych procesów, aby mógł skalować się na wiele rdzeni i unikać pamięci limity.

Bądź ostrożny, aby ustawić opcję <rampup in seconds> wystarczająco wysoko na klientach, jeśli ustawisz ją na low all buffers and grinds to halt.

Jedynym problemem z socket.io-benchmark jest to, że musiałem użyć node v0.4. 12, aby to wszystko działało ze względu na zależność od V8-profiler, który nie będzie kompilowany pod nowszymi wersjami node (w momencie pisania).

 11
Author: Sean Bannister,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-30 09:50:55

Https://www.npmjs.org/package/thor

Jest narzędziem wiersza poleceń i ma podobne wyjście jak Apache Bench


Thor:                                                  version: 1.0.0

God of Thunder, son of Odin and smasher of WebSockets!

Thou shall:
- Spawn 1 workers.
- Create 2 concurrent/parallel connections.
- Smash 100 connections with the mighty Mjölnir.

The answers you seek shall be yours, once I claim what is mine.

Connecting to ws://server:8080/examples/websocket/chat

  Opened 100 connections


Online               439 milliseconds
Time taken           441 milliseconds
Connected            100
Disconnected         0
Failed               55
Total transferred    132.62kB
Total received       71.85kB

Durations (ms):

                     min     mean     stddev  median max
Handshaking          1       5             3       4 20
Latency              0       0             1       0 3

Percentile (ms):

                      50%     66%     75%     80%     90%     95%     98%     98%    100%
Handshaking          4       5       5       6       7       11      17      20      20
Latency              0       0       1       1       1       1       1       2       3
 3
Author: notmyitblog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-25 17:05:50

Do analizy porównawczej, ile jednoczesnych połączeń można skonfigurować, polecam wsbench . Jednak nie będzie działać dla Socket.IO strony (bo bardziej skomplikowany uścisk dłoni). Szukałem go i znalazłem kilka narzędzi, które po prostu skonfigurować połączenia do Socket.IO serwer. To nie wystarczy do pomiaru rzeczywistej wydajności. Musisz wysyłać i odbierać prawdziwe wiadomości, które symulują prawdziwego klienta Twojej aplikacji internetowej. Opisałem kilka pomysłów jak stworzyć własny benchmark tutaj: Benchmarking dla węzła.JS / Socket.IO sites

 0
Author: Yuri Lapitsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-13 08:42:53