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.
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ą.
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).
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
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
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