Sdílet prostřednictvím


Testování hustoty připojení nástrojem Crank

, autor: Tom FitzMacken

Upozornění

Tato dokumentace není určená pro nejnovější verzi služby SignalR. Podívejte se na ASP.NET Core SignalR.

Tento článek popisuje, jak pomocí nástroje Crank otestovat aplikaci s více simulovanými klienty.

Jakmile je vaše aplikace spuštěná v hostitelském prostředí (buď ve webové roli Azure, službě IIS, nebo v místním prostředí pomocí Owinu), můžete otestovat odpověď aplikace na vysokou úroveň hustoty připojení pomocí nástroje Crank. Hostitelským prostředím může být server Internetové informační služby (IIS), hostitel Owin nebo webová role Azure. (Poznámka: Čítače výkonu nejsou na Azure App Service Web Apps k dispozici, takže nebudete moct získat údaje o výkonu z testu hustoty připojení.)

Hustota připojení označuje počet souběžných připojení TCP, která lze navázat na serveru. Každé připojení TCP má vlastní režii a otevření velkého počtu nečinných připojení nakonec vytvoří kritický bod paměti.

Základ kódu SignalR obsahuje nástroj pro zátěžové testování s názvem Crank. Nejnovější verzi Cranku najdete ve větvi Dev na GitHubu. Archiv Zip větve Dev základu kódu SignalR si můžete stáhnout tady.

Kliky se dají použít k úplnému nasátí paměti serveru, aby se vypočítal celkový počet nečinných připojení na hardwaru serveru. Alternativně můžete použít Crank k zátěžovým testům serveru při určitém zatížení paměti tím, že navýšíte připojení, dokud nedosáhnete určitého počtu nebo určité prahové hodnoty paměti.

Při testování je důležité používat vzdálené klienty, abyste se vyhnuli konkurenci o prostředky (tj. připojení TCP a paměť). Monitorujte klienty a ujistěte se, že nenarazí na žádné kritické body, které by mohly serveru bránit v dosažení plné kapacity (paměti nebo procesoru). Možná budete muset zvýšit počet klientů, aby se server plně načetl.

Spuštění testu hustoty připojení

Tato část popisuje kroky potřebné ke spuštění testu hustoty připojení v aplikaci SignalR.

  1. Stáhněte a sestavte větev Dev základu kódu SignalR. Na příkazovém řádku přejděte do <adresáře> projektu\src\Microsoft.AspNet.SignalR.Crank\bin\debug.
  2. Nasaďte aplikaci do zamýšleného hostitelského prostředí. Poznamenejte si koncový bod, který vaše aplikace používá. Například v aplikaci vytvořené v kurzu Začínáme je http://<yourhost>:8080/signalrkoncový bod .
  3. Nainstalujte na server čítače výkonu SignalR . Pokud vaše aplikace běží v Azure, projděte si téma Použití čítačů výkonu SignalR ve webové roli Azure.

Po stažení a sestavení základu kódu a instalaci čítačů výkonu na hostiteli najdete nástroj příkazového řádku Crank ve src\Microsoft.AspNet.SignalR.Crank\bin\Debug složce .

Mezi dostupné možnosti nástroje Klika patří:

  • /?: Zobrazuje obrazovku nápovědy. Dostupné možnosti se zobrazí také v případě, že je parametr Url vynechán.
  • /Url: Adresa URL pro připojení SignalR. Tento parametr je povinný. V případě aplikace SignalR používající výchozí mapování bude cesta končit na "/signalr".
  • /Transport: Název použitého přenosu. Výchozí hodnota je auto, která vybere nejlepší dostupný protokol. Mezi možnosti patří WebSockets, ServerSentEventsa LongPolling (ForeverFrame není možnost pro Crank, protože se místo Internet Exploreru používá klient .NET). Další informace o tom, jak SignalR vybírá přenosy, najdete v tématu Přenosy a náhradní přenosy.
  • /BatchSize: Počet klientů přidaných v každé dávce. Výchozí hodnota je 50.
  • /ConnectInterval: Interval v milisekundách mezi přidáváním připojení. Výchozí hodnota je 500.
  • /Connections: Počet připojení použitých k zátěžovém testování aplikace. Výchozí hodnota je 100 000.
  • /ConnectTimeout: Časový limit v sekundách před přerušením testu. Výchozí hodnota je 300.
  • MinServerMBytes: Minimální počet megabajtů serveru, ke které se má dostat. Výchozí hodnota je 500.
  • SendBytes: Velikost datové části odeslané na server v bajtech. Výchozí hodnota je 0.
  • SendInterval: Prodleva v milisekundách mezi zprávami na server. Výchozí hodnota je 500.
  • SendTimeout: Časový limit zpráv na server v milisekundách. Výchozí hodnota je 300.
  • ControllerUrl: Adresa URL, kde bude jeden klient hostovat centrum kontroleru. Výchozí hodnota je null (žádné centrum kontroleru). Rozbočovač kontroleru je spuštěn při spuštění relace Crank; není proveden žádný další kontakt mezi rozbočovačem ovladače a klikou.
  • NumClients: Počet simulovaných klientů, kteří se mají připojit k aplikaci. Výchozí hodnota je jedna.
  • Soubor protokolu: Název souboru souboru protokolu pro testovací běh. Výchozí formát je crank.csv.
  • SampleInterval: Doba v milisekundách mezi ukázkami čítačů výkonu. Výchozí hodnota je 1 000.
  • SignalRInstance: Název instance pro čítače výkonu na serveru. Ve výchozím nastavení se použije stav připojení klienta.

Příklad

Následující příkaz otestuje web s názvem pfsignalr v Azure, který je hostitelem aplikace na portu 8080 s centrem s názvem ControllerHub s použitím 100 připojení.

crank /Connections:100 /Url:http://pfsignalr.cloudapp.net:8080/signalr