Sdílet prostřednictvím


Řešení potíží s připojením a doručováním zpráv

Tyto pokyny představují několik způsobů, jak pomoct s vlastní diagnostikou, abyste našli původní příčinu přímo nebo zúžili problém. Výsledek samoobslužné diagnostiky je také užitečný při hlášení pro další šetření.

Nejprve je potřeba zkontrolovat na webu Azure Portal, pro který serviceMode je služba Azure SignalR (označovaná také jako ASRS) nakonfigurovaná.

ServiceMode

Za druhé je potřeba zachytit trasování služeb, abyste mohli řešit potíže. Informace o zachycení trasování najdete v tématu Postup zachycení trasování služby.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Jak zachytit trasování služeb

Kvůli zjednodušení procesu řešení potíží poskytuje služba Azure SignalR nástroj pro živé trasování, který zveřejňuje trasování služeb v kategoriích připojení a zasílání zpráv . Trasování zahrnuje události připojené k připojení nebo odpojené události a přijaté nebo levé události zpráv, které nejsou omezené. Pomocí nástroje živého trasování můžete zachytávat, zobrazovat, řadit, filtrovat a exportovat živé trasování. Další informace naleznete v tématu Použití nástroje živého trasování.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Řešení potíží s výchozím režimem

Pokud je služba ASRS ve výchozím režimu, existují tři role: klient, server a služba:

  • Klient: Klient je zkratka pro klienty připojené k ASRS. V těchto doprovodných materiálech se trvalá připojení připojující klient a ASRS označují jako připojení klientů.

  • Server: Server je zkratka pro server, který obsluhuje vyjednávání klientů a hostuje logiku SignalR Hub . Trvalá připojení mezi serverem a ASRS se v těchto doprovodných materiálech nazývají Připojení k serveru.

  • Služba: Služba je krátký název služby ASRS v těchto doprovodných materiálech.

Podrobné seznámení s celou architekturou a pracovním postupem najdete v interních informacích o službě Azure SignalR Service.

Problém můžete zúžit několika způsoby.

  • Pokud k problému dochází správně nebo je možné ho opakovat, je přímý způsob zobrazení probíhajícího provozu.

  • Pokud je problém těžké opakovat, můžou vám pomoct trasování a protokoly.

Jak zobrazit provoz a zúžit problém

Zachycení probíhajícího provozu je nejpřímější způsob, jak tento problém zúžit. Trasování sítě můžete zachytit pomocí níže popsaných možností:

Žádosti klientů

V případě trvalého připojení SignalR se nejprve /negotiate přesměruje na hostovaný aplikační server a pak se přesměruje do služby Azure SignalR a pak naváže skutečné trvalé připojení ke službě Azure SignalR. Podrobný postup najdete v interních informacích služby Azure SignalR.

S ručním trasováním sítě na straně klienta zkontrolujte, který požadavek selže s tím, jaký stavový kód a jakou odpověď, a vyhledejte řešení v průvodci odstraňováním potíží.

Požadavky serveru

SignalR Server udržuje připojení serveru mezi serverem a službou. Po spuštění aplikačního serveru se spustí připojení WebSocket ke službě Azure SignalR. Všechny klientské přenosy se směrují přes službu Azure SignalR do těchto připojeník serveru a pak se odešlou do Hubslužby . Když připojení k serveru klesne, budou ovlivněni klienti směrovanými na toto připojení k serveru. Naše sada Azure SignalR SDK má logiku "Vždy opakovat" pro opětovné připojení připojení k serveru s maximálně 1minutovým zpožděním, aby se minimalizovaly efekty.

Připojení kserveru může dojít k poklesu kvůli nestabilitě sítě nebo pravidelné údržbě služby Azure SignalR nebo aktualizací nebo údržbě hostovaného aplikačního serveru. Pokud má klientská strana mechanismus odpojení/opětovného připojení, je účinek minimální, stejně jako jakékoli straně klienta způsobilo odpojení a opětovné připojení.

Zobrazte trasování sítě na straně serveru a vyhledejte stavový kód a podrobnosti o chybě, proč služba zahodí nebo odmítne připojení k serveru. Vyhledejte původní příčinu v průvodci odstraňováním potíží.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Přidávání protokolů

Protokoly můžou být užitečné k diagnostice problémů a monitorování stavu spuštění.

Povolení protokolu na straně klienta

Prostředí protokolování na straně klienta je naprosto stejné jako při použití místního signalR.

Povolení protokolování na straně klienta pro ASP.NET Core SignalR
Povolení protokolování na straně klienta pro ASP.NET SignalR

Povolení protokolu na straně serveru

Povolení protokolování na straně serveru pro ASP.NET Core SignalR

Protokolování na straně serveru pro ASP.NET Core SignalR integraci s protokolováním založeným ILogger na ASP.NET Core rozhraní. Protokolování na straně serveru můžete povolit pomocí ConfigureLoggingukázkového použití následujícím způsobem:

.ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConsole();
            logging.AddDebug();
        })

Kategorie protokolovacího modulu pro Azure SignalR vždy začínají .Microsoft.Azure.SignalR Pokud chcete povolit podrobné protokoly z Azure SignalR, nakonfigurujte předchozí předpony na Information úroveň v souboru appsettings.json následujícím způsobem:

{
    "Logging": {
        "LogLevel": {
            ...
            "Microsoft.Azure.SignalR": "Information",
            ...
        }
    }
}

Zkontrolujte, jestli se nezaznamenávají nějaké neobvyklé upozornění nebo protokoly chyb.

Povolení trasování na straně serveru pro ASP.NET SignalR

Při použití verze >sady SDK = 1.0.0můžete povolit trasování přidáním následujícího příkazu: web.config(Podrobnosti)

<system.diagnostics>
    <sources>
      <source name="Microsoft.Azure.SignalR" switchName="SignalRSwitch">
        <listeners>
          <add name="ASRS" />
        </listeners>
      </source>
    </sources>
    <!-- Sets the trace verbosity level -->
    <switches>
      <add name="SignalRSwitch" value="Information" />
    </switches>
    <!-- Specifies the trace writer for output -->
    <sharedListeners>
      <add name="ASRS" type="System.Diagnostics.TextWriterTraceListener" initializeData="asrs.log.txt" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>

Zkontrolujte, jestli se nezaznamenávají nějaké neobvyklé upozornění nebo protokoly chyb.

Povolení protokolů ve službě Azure SignalR

Můžete také povolit diagnostické protokoly pro službu Azure SignalR. Tyto protokoly poskytují podrobné informace o každém připojení připojeném ke službě Azure SignalR.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Řešení potíží s bezserverový režim

Pokud je služba ASRS v bezserverovém režimu, podporuje Serverless režim pouze ASP.NET Core SignalR a ASP.NET SignalR tento režim nepodporuje.

Při diagnostice problémů s připojením v Serverless režimu je nejpřímější způsob zobrazení provozu na straně klienta. Můžete také povolit protokoly na straně klienta a protokoly na straně služby.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Řešení potíží s klasickým režimem

Classic režim je zastaralý a nedoporučuje se používat. Pokud je služba Azure SignalR v klasickém režimu, pomocí připojených připojení k serveru určí, jestli je aktuální služba v default režimu nebo serverless režimu. Klasický režim může vést k problémům s připojením mezi klienty, protože když dojde k náhlému poklesu veškerého připojení k připojenému serveru, například kvůli nestabilitě sítě, Azure SignalR se domnívá, že se teď přepne do serverless režimu a klienti připojení během tohoto období se nikdy nebudou směrovat na hostovaný aplikační server. Povolte protokoly na straně služby a zkontrolujte, jestli jsou zaznamenáni někteří klienti, jako ServerlessModeEntered kdybyste ale hostovali aplikační server, někteří klienti se nikdy nedostanou na stranu aplikačního serveru. Pokud se zobrazí některý z těchto klientů, přerušte připojení klienta a pak nechte klienty restartovat.

classic Řešení potíží s připojením k režimu a doručováním zpráv se podobá řešení potíží s výchozím režimem.

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Stav služeb

Můžete zkontrolovat rozhraní API stavu pro stav služby.

  • Požadavek: GET https://{instance_name}.service.signalr.net/api/v1/health

  • Stavový kód odpovědi:

    • 200: zdravé.
    • 503: Vaše služba není v pořádku. Můžeš:
      • Počkejte několik minut na automatické obnovení.
      • Zkontrolujte, jestli je IP adresa stejná jako IP adresa z portálu.
      • Nebo restartujte instanci.
      • Pokud všechny výše uvedené možnosti nefungují, kontaktujte nás přidáním nové žádosti o podporu na webu Azure Portal.

Další informace o zotavení po havárii

Máte problémy nebo zpětnou vazbu k řešení potíží? Dejte nám vědět.

Další kroky

V této příručce jste se dozvěděli, jak řešit potíže s připojením a doručováním zpráv. Můžete se také naučit, jak řešit běžné problémy.