Megosztás a következőn keresztül:


Az Azure Cosmos DB .NET SDK használatakor felmerülő hibák diagnosztizálása és elhárítása

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ez a cikk a .NET SDK és az Azure Cosmos DB for NoSQL-fiókok használatakor előforduló gyakori problémákat, kerülő megoldásokat, diagnosztikai lépéseket és eszközöket ismerteti. A .NET SDK ügyféloldali logikai reprezentációt biztosít az Azure Cosmos DB for NoSQL eléréséhez. Ez a cikk azokat az eszközöket és módszereket ismerteti, amelyek segítenek megoldani a problémákat.

Ellenőrzőlista a hibaelhárítási problémákhoz

Mielőtt éles környezetbe helyezi az alkalmazást, vegye figyelembe az alábbi ellenőrzőlistát. Az ellenőrzőlista használatával számos gyakori problémát tapasztalhat. Azt is gyorsan diagnosztizálhatja, ha probléma merül fel:

  • Használja a legújabb SDK-t. Az előzetes verziójú SDK-k nem használhatók éles környezetben. Ez megakadályozza a már kijavított ismert problémák elhárítását.
  • Tekintse át a teljesítményre vonatkozó tippeket, és kövesse a javasolt eljárásokat. Ez segít megelőzni a skálázási, késési és egyéb teljesítményproblémákat.
  • Engedélyezze az SDK-naplózást a probléma elhárításához. A naplózás engedélyezése hatással lehet a teljesítményre, ezért a legjobb, ha csak hibaelhárításkor engedélyezi. A következő naplókat engedélyezheti:
    • Naplómetrikák az Azure Portal használatával. A portálmetrikák az Azure Cosmos DB telemetriát jelenítik meg, amely hasznos annak megállapításához, hogy a probléma megfelel-e az Azure Cosmos DB-nek, vagy az ügyféloldalról származik.
    • Naplózza a diagnosztikai sztringet a műveletekből és/vagy kivételekből.

Tekintse meg a cikk gyakori problémáit és kerülő megoldásait ismertető szakaszt.

Tekintse meg az aktívan figyelt GitHub-problémák szakaszt . Ellenőrizze, hogy van-e már megoldással kapcsolatos hasonló probléma. Ha nem talált megoldást, küldjön egy GitHub-problémát. Sürgős problémák esetén támogatási jelölőt nyithat meg.

A diagnosztikai adatok rögzítése

Az SDK összes válasza, beleértve a tulajdonságot isCosmosException, rendelkezik.Diagnostics Ez a tulajdonság az egyetlen kéréssel kapcsolatos összes információt rögzíti, beleértve az újrapróbálkozások vagy átmeneti hibák esetén is.

A rendszer sztringként adja vissza a diagnosztikát. A sztring az egyes verziókkal együtt változik, mivel a különböző forgatókönyvek hibaelhárítása is javult. Az SDK minden egyes verziójában a sztring formázásának kompatibilitástörő változásai lesznek. Ne elemezd a sztringet a kompatibilitástörő módosítások elkerülése érdekében. Az alábbi kódminta bemutatja, hogyan olvashatók be a diagnosztikai naplók a .NET SDK használatával:

try
{
    ItemResponse<Book> response = await this.Container.CreateItemAsync<Book>(item: testItem);
    if (response.Diagnostics.GetClientElapsedTime() > ConfigurableSlowRequestTimeSpan)
    {
        // Log the response.Diagnostics.ToString() and add any additional info necessary to correlate to other logs 
    }
}
catch (CosmosException cosmosException)
{
    // Log the full exception including the stack trace with: cosmosException.ToString()
    
    // The Diagnostics can be logged separately if required with: cosmosException.Diagnostics.ToString()
}

// When using Stream APIs
ResponseMessage response = await this.Container.CreateItemStreamAsync(partitionKey, stream);
if (response.Diagnostics.GetClientElapsedTime() > ConfigurableSlowRequestTimeSpan || !response.IsSuccessStatusCode)
{
    // Log the diagnostics and add any additional info necessary to correlate to other logs with: response.Diagnostics.ToString()
}

Gyakori hibák és áthidaló megoldásaik

Általános javaslatok

  • Kövesse a kivétel részleteiben szereplő hivatkozásokat aka.ms .
  • Amikor csak lehetséges, futtassa az alkalmazást ugyanabban az Azure-régióban, mint az Azure Cosmos DB-fiókja.
  • Kapcsolódási/rendelkezésre állási problémákat tapasztalhat az ügyfélszámítógép erőforrásainak hiánya miatt. Javasoljuk, hogy monitorozza a processzorhasználatot az Azure Cosmos DB-ügyfelet futtató csomópontokon, és skálázással és horizontális felskálázással, ha nagy terhelésen futnak.

A portál metrikáinak ellenőrzése

A portálmetrikák ellenőrzése segít megállapítani, hogy az ügyféloldali probléma vagy a szolgáltatással kapcsolatos probléma van-e. Ha például a metrikák nagy sebességű korlátozott kérelmeket tartalmaznak (HTTP-állapotkód: 429), ami azt jelenti, hogy a kérés szabályozva van, akkor ellenőrizze a kérelem sebességének túl nagy szakaszát.

Újrapróbálkozás a tervezés során

A rugalmas alkalmazások Azure Cosmos DB SDK-kkal való tervezéséről szóló útmutatónkból megtudhatja, hogyan tervezhet rugalmas alkalmazásokat, és megtudhatja, hogy melyek az SDK újrapróbálkozási szemantikája.

SNAT

Ha az alkalmazás nyilvános IP-cím nélküli Azure-beli virtuális gépeken van üzembe helyezve, az Azure SNAT-portok alapértelmezés szerint kapcsolatot létesítenek a virtuális gépen kívüli végpontokkal. A virtuális gépről az Azure Cosmos DB-végpontra engedélyezett kapcsolatok számát az Azure SNAT-konfiguráció korlátozza. Ez a helyzet kapcsolatszabályozáshoz, kapcsolatlezáráshoz vagy a fent említett kérések időtúllépéséhez vezethet.

Az Azure SNAT-portok csak akkor használatosak, ha a virtuális gép magánhálózati IP-címmel rendelkezik, és nyilvános IP-címhez csatlakozik. Az Azure SNAT korlátozásának elkerülésére két áthidaló megoldás létezik (feltéve, hogy már egyetlen ügyfélpéldányt használ a teljes alkalmazásban):

  • Adja hozzá az Azure Cosmos DB szolgáltatásvégpontot az Azure Virtual Machines virtuális hálózat alhálózatához. További információ: Azure Virtual Network szolgáltatásvégpontok.

    Ha a szolgáltatásvégpont engedélyezve van, a rendszer nem küldi el a kéréseket nyilvános IP-címről az Azure Cosmos DB-nek. Ehelyett a rendszer elküldi a virtuális hálózatot és az alhálózati identitást. Ez a módosítás tűzfalleesést okozhat, ha csak nyilvános IP-címek engedélyezettek. Ha tűzfalat használ, a szolgáltatásvégpont engedélyezésekor adjon hozzá egy alhálózatot a tűzfalhoz virtuális hálózati ACL-ek használatával.

  • Nyilvános IP-cím hozzárendelése az Azure-beli virtuális géphez.

Magas hálózati késés

A késés hibaelhárításával kapcsolatos részletekért tekintse meg a késéssel kapcsolatos hibaelhárítási útmutatót.

Proxyhitelesítési hibák

Ha HTTP 407-ként megjelenő hibák jelennek meg:

Response status code does not indicate success: ProxyAuthenticationRequired (407);

Ezt a hibát nem az SDK generálja, és nem az Azure Cosmos DB szolgáltatásból származik. A hiba a hálózati konfigurációval kapcsolatos. A hálózati konfiguráció egyik proxyja valószínűleg nem rendelkezik a szükséges proxyhitelesítéssel. Ha tudomása szerint nem használt proxyt, lépjen kapcsolatba a hálózatkezelésért felelős csapattal. Ha proxyt használ, győződjön meg arról, hogy a megfelelő WebProxy-konfigurációt állítja be a CosmosClientOptions.WebProxyban az ügyfélpéldány létrehozásakor.

Gyakori lekérdezési problémák

A lekérdezési metrikák segítenek meghatározni, hogy a lekérdezés hol tölti az idő nagy részét. A lekérdezési metrikákból láthatja, hogy a rendszer mennyit költ a háttérrendszerre és az ügyfélre. További információ a lekérdezés teljesítményére vonatkozó útmutatóról.

Ha a következő hibát tapasztalja: Unable to load DLL 'Microsoft.Azure.Cosmos.ServiceInterop.dll' or one of its dependencies: és a Windowst használja, frissítsen a legújabb Windows-verzióra.

Következő lépések