Felsöka vanliga problem i Azure Cosmos DB:s API för MongoDB

GÄLLER FÖR: Mongodb

I följande artikel beskrivs vanliga fel och lösningar för distributioner med hjälp av Azure Cosmos DB for MongoDB.

Kommentar

Azure Cosmos DB är inte värd för MongoDB-motorn. Den tillhandahåller en implementering av MongoDB wire protocol version 4.0, 3.6 och äldre stöd för wire protocol version 3.2. Därför finns vissa av dessa fel bara i Azure Cosmos DB:s API för MongoDB.

Vanliga fel och lösningar

Kod Fel Beskrivning Lösning
2 BadValue En vanlig orsak är att en indexsökväg som motsvarar det angivna order-by-objektet undantas eller att ordningen efter fråga inte har något motsvarande sammansatt index som det kan hanteras från. Frågan begär en sortering i ett fält som inte är indexerat. Skapa ett matchande index (eller sammansatt index) för den sorteringsfråga som ska köras.
2 Transaktionen är inte aktiv Transaktionen med flera dokument överskred den fasta tidsgränsen på 5 sekunder. Försök att utföra transaktionen med flera dokument igen eller begränsa omfattningen av åtgärder i transaktionen med flera dokument så att den slutförs inom tidsgränsen på 5 sekunder.
9 FailedToParse Anger att Cosmos DB-servern inte kunde tolka eller bearbeta en parameter eftersom de angivna indata inte överensstämde med det förväntade eller stödda formatet. Se till att endast giltiga och parametrar som stöds ingår i dina frågor.
13 Behörighet saknas Begäran saknar behörighet att slutföra. Se till att du använder rätt nycklar.
26 NamespaceNotFound Det går inte att hitta databasen eller samlingen som refereras i frågan. Kontrollera att namnet på databasen/samlingen matchar namnet i frågan exakt.
50 ExceededTimeLimit Förfrågan har överskridit tidsgränsen på 60 sekunder. Det kan finnas många orsaker till det här felet. En av orsakerna är när den för närvarande allokerade kapaciteten för enheter för begäran inte räcker för att slutföra begäran. Det här kan du lösa genom att öka antalet förfrågningsenheter för samlingen eller databasen. I andra fall kan du komma runt felet genom att dela upp en stor förfrågan i flera mindre. Om du försöker utföra en skrivåtgärd som har fått det här felet kan det leda till en dubblettskrivning.

Om du försöker ta bort stora mängder data utan att påverka RU:er:
– Överväg att använda TTL (baserat på tidsstämpel): Ta bort data med Azure Cosmos DB:s API för MongoDB
– Använd markör-/batchstorlek för att utföra borttagningen. Du kan hämta ett enskilt dokument i taget och ta bort det via en loop. Detta kan hjälpa dig att ta bort data långsamt utan att påverka produktionsprogrammet.
61 ShardKeyNotFound Dokumentet i din begäran innehöll inte samlingens shardnyckel (Azure Cosmos DB-partitionsnyckel). Se till att samlingens shardnyckel används i begäran.
66 ImmutableField Begäran försöker ändra ett oföränderligt fält Fälten "_id" är oföränderliga. Kontrollera att din begäran inte försöker uppdatera fältet eller shardnyckelfältet.
67 CannotCreateIndex Det går inte att slutföra begäran om att skapa ett index. Upp till 500 index för enstaka fält kan skapas i en container. Upp till åtta fält kan ingå i ett sammansatt index (sammansatta index stöds i version 3.6+).
112 WriteConflict Transaktionen med flera dokument misslyckades på grund av en transaktion i flera dokument i konflikt Försök att utföra transaktionen med flera dokument igen tills den lyckas.
115 CommandNotSupported Begäran som skulle utföras stöds inte. Annan information bör anges i felet. Om den här funktionen är viktig för dina distributioner skapar du ett supportärende i Azure-portalen så återkommer Azure Cosmos DB-teamet till dig.
11000 DuplicateKey Shardnyckeln (Azure Cosmos DB-partitionsnyckel) för det dokument som du infogar finns redan i samlingen eller så har en fältbegränsning för ett unikt index överskridits. Använd funktionen update() för att uppdatera ett befintligt dokument. Om villkoret för det unika indexfältet har brutits infogar eller uppdaterar du dokumentet med ett fältvärde som inte finns i shard/partition ännu. Ett annat alternativ är att använda ett fält som innehåller en kombination av ID:t och shardnyckelfälten.
16500 TooManyRequests Det totala antalet förbrukade förfrågansenheter överskrider samlingens etablerade enhetsfrekvens och en begränsning har införts. Överväg att skala upp det tilldelade dataflödet för en container eller en uppsättning containrar i Azure-portalen, eller försök utföra åtgärden igen. Om du aktiverar SSR (återförsök på serversidan) försöker Azure Cosmos DB automatiskt igen de begäranden som misslyckas på grund av det här felet.
16501 ExceededMemoryLimit Som en tjänst för flera klientorganisationer har åtgärden överskridit klientens minnestilldelning. Detta gäller endast för Azure Cosmos DB för MongoDB version 3.2. Minska åtgärdens omfång genom mer restriktiva frågekriterier eller kontakta supporten från Azure Portal. Exempel: db.getCollection('users').aggregate([{$match: {name: "Andy"}}, {$sort: {age: -1}}]))
40324 Okänt namn på pipelinefas. Det gick inte att identifiera fasnamnet i din begäran om sammansättningspipeline. Se till att alla namn på sammansättningspipeline är giltiga i din begäran.
- Problem med MongoDB-trådversion De äldre versionerna av MongoDB-drivrutinerna kan inte identifiera namnet på Azure Cosmos DB-kontot i anslutningssträngarna. appName=@accountName@ Lägg till i slutet av din anslutningssträng, där accountName är ditt Azure Cosmos DB-kontonamn.
- Nätverksproblem på MongoDB-klienten (t.ex. socket- eller endOfStream-undantag) Nätverksbegäran misslyckades. Detta orsakas ofta av en inaktiv TCP-anslutning som MongoDB-klienten försöker använda. MongoDB-drivrutiner använder ofta anslutningspoolen, vilket resulterar i en slumpmässig anslutning som väljs från poolen som används för en begäran. Inaktiva anslutningar når vanligtvis tidsgränsen på Azure Cosmos DB-sidan efter fyra minuter. Du kan antingen göra om dessa misslyckade förfrågningar i programkoden, ändra inställningarna för MongoDB-klienten (drivrutinen) till att avbryta inaktiva TCP-anslutningar före tidsgränsen på fyra minuter eller konfigurera operativsystemets keepalive-inställningar för att upprätthålla TCP-anslutningarna i ett aktivt tillstånd.

För att undvika anslutningsmeddelanden bör du ändra anslutningssträngen genom att ange maxConnectionIdleTime till 1–2 minuter.
– Mongo-drivrutin: konfigurera maxIdleTimeMS=120000
– Node.JS: konfigurera socketTimeoutMS=120000, autoReconnect = true, keepAlive = true, keepAliveInitialDelay = 3 minuter
- Mongo-gränssnittet fungerar inte på Azure Portal När användaren försöker öppna ett Mongo-gränssnitt händer ingenting och fliken förblir tom. Kontrollera brandväggen. Brandväggen stöds inte med Mongo-gränssnittet på Azure Portal.
– Installera Mongo-gränssnittet på den lokala datorn i brandväggsreglerna
– Använd ett äldre Mongo-gränssnitt
- Det går inte att ansluta med anslutningssträngen Anslutningssträng har ändrats vid uppgradering från 3.2 till> 3.6 När du använder Azure Cosmos DB:s API för MongoDB-konton har 3.6-versionen av konton slutpunkten i formatet *.mongo.cosmos.azure.com medan 3.2-versionen av konton har slutpunkten i formatet *.documents.azure.com.

Nästa steg

  • Lär dig hur du använder Studio 3T med Azure Cosmos DB:s API för MongoDB.
  • Lär dig hur du använder Robo 3T med Azure Cosmos DB:s API för MongoDB.
  • Utforska MongoDB-exempel med Azure Cosmos DB:s API för MongoDB.