Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk az Azure Cosmos DB Java SDK használatának ajánlott eljárásait ismerteti. Ezen eljárások követésének segítségével javíthatja a késést, a rendelkezésre állást és növelheti az általános teljesítményt.
Checklist
| Ellenőrizve | Topic | Részletek/hivatkozások |
|---|---|---|
| SDK verziója | Mindig az optimális teljesítmény érdekében elérhető Azure Cosmos DB SDK legújabb verzióját használja. | |
| Singleton-ügyfél | Használjon egyetlen az alkalmazás teljes élettartama alatt a jobb teljesítményCosmosClient. |
|
| Régiók | A késés csökkentése érdekében mindenképpen ugyanabban az Azure-régióban futtassa az alkalmazást, mint az Azure Cosmos DB-fiókját. Engedélyezze a 2–4 régiót, és replikálja a fiókjait több régióban a legjobb rendelkezésre állás érdekében. Üzemi terhelések esetén engedélyezze a szolgáltatás által felügyelt feladatátvételt. Ennek a konfigurációnak a hiányában a fiók írási rendelkezésre állása az írási régió leállásának teljes időtartamára csökken, mivel a manuális feladatátvétel a régiókapcsolat hiánya miatt nem fog sikerülni. Tudja meg, hogyan adhat hozzá több régiót a Java SDK segítségévellátogassa meg ezt az oldalt | |
| Rendelkezésre állás és feladatátvétel | Állítsa be a preferáltregionokat a v4 SDK-ban. A feladatátvételek során az írási műveleteket a rendszer az aktuális írási régióba küldi, és az összes olvasást az előnyben részesített régiók listájában lévő első régióba küldi. A regionális feladatátvételi mechanikával kapcsolatos további információkért tekintse meg a rendelkezésre állási hibaelhárítási útmutatót. | |
| CPU | Kapcsolódási/rendelkezésre állási problémákat tapasztalhat az ügyfélszámítógép erőforrásainak hiánya miatt. Figyelje a CPU-kihasználtságot az Azure Cosmos DB-ügyfelet futtató csomópontokon, és vertikálisan vagy horizontálisan skálázzon, ha a kihasználtság nagyon magas. | |
| Hosting | Az éles számítási feladatok leggyakoribb eseteihez javasoljuk, hogy lehetőség szerint használjunk legalább 4 magos és 8 GB memóriájú virtuális gépeket. | |
| Kapcsolati módok | A legjobb teljesítmény érdekében használja a Közvetlen módot . Ennek módjáról a V4 SDK dokumentációjában olvashat. | |
| hálózat | Ha virtuális gépet használ az alkalmazás futtatásához, engedélyezze a gyorsított hálózatkezelést a virtuális gépen, hogy segítsen a nagy forgalom miatti szűk keresztmetszetek elhárításában, és csökkentse a késést vagy a cpu-jittert. Érdemes lehet megfontolni egy magasabb szintű virtuális gép használatát is, ahol a maximális processzorhasználat 70% alatt van. | |
| Rövid élettartamú portkimerülés | Ritka vagy szórványos kapcsolatok esetén javasoljuk, hogy a idleEndpointTimeout beállítást magasabb értékre állítsa. A idleEndpointTimeout tulajdonság a DirectConnectionConfig-ben segít szabályozni annak idejét, hogy a nem használt kapcsolatok mikor záródnak be. Ez csökkenti a nem használt kapcsolatok számát. Alapértelmezés szerint egy végpont tétlen kapcsolatai 1 órán át nyitva maradnak. Ha nincsenek kérések egy adott végpontra az inaktív végpont időtúllépési időtartamára vonatkozóan, a közvetlen ügyfél bezárja az adott végponttal létesített összes kapcsolatot az erőforrások és az I/O-költségek mentése érdekében. |
|
| Megfelelő ütemező használata (Az eseményhurok IO Netty-szálainak ellopásának elkerülése) | Kerülje a hívások blokkolását: .block(). A teljes hívásverem aszinkron, hogy kihasználhassa az aszinkron API-minták előnyeit, valamint a megfelelő szál- és ütemezők használatát |
|
| Végpontok közötti időtúllépések | A végpontok közötti időtúllépések eléréséhez implementáljon végpontok közötti időtúllépési szabályzatot a Java SDK-ban. Az Azure Cosmos DB időtúllépéseivel kapcsolatos további részletekért látogasson el ide | |
| Újrapróbálkozási logika | Az átmeneti hiba olyan hiba, amelynek kiváltó oka hamarosan megoldódik. Az adatbázishoz csatlakozó alkalmazásokat úgy kell létrehozni, hogy ezekre az átmeneti hibákra számítson. A kezelésükhöz valósítson meg újrapróbálás logikát a kódban, ahelyett, hogy alkalmazáshibákként jeleníti meg őket a felhasználóknak. Az SDK beépített logikával rendelkezik az újrapróbálkozási kérések, például olvasási vagy lekérdezési műveletek átmeneti hibáinak kezelésére. Az SDK nem kísérli meg újra az írásokat átmeneti hibák esetén, mivel az írások nem idempotensek. Az SDK lehetővé teszi, hogy a felhasználók visszakapcsolási logikát konfiguráljanak a terhelési korlátozásokhoz. Az újrapróbálkozandó hibákról további részletekért látogasson el ide | |
| Adatbázis-/gyűjteménynevek gyorsítótárazása | Kérje le az adatbázisok és tárolók nevét a konfigurációból, vagy gyorsítótárazza őket az indításkor. Olyan hívások, mint például CosmosAsyncDatabase#read() vagy CosmosAsyncContainer#read(), metaadat-hívásokat eredményeznek a szolgáltatáshoz, amelyek a rendszer által fenntartott RU-korlátból lesznek felhasználva.
createDatabaseIfNotExists() az adatbázis beállításához is csak egyszer kell használni. Általánosságban elmondható, hogy ezeket a műveleteket ritkán kell végrehajtani. |
|
| Párhuzamos lekérdezések | Az Azure Cosmos DB SDK támogatja a lekérdezések párhuzamos futtatását a lekérdezések jobb késése és átviteli sebessége érdekében. Javasoljuk, hogy a maxDegreeOfParallelism tulajdonságot a CosmosQueryRequestsOptions megadott számú partícióra állítsa. Ha nem ismeri a partíciók számát, állítsa be azt az értéket -1 , amely a legjobb késést fogja eredményezni. Emellett állítsa be a maxBufferedItemCount visszaadott eredmények várt számát is az előre lekért eredmények számának korlátozásához. |
|
| Teljesítménytesztelési visszalépések | Az alkalmazáson végzett tesztelés során időközönként végre kell hajtania a visszalépéseket RetryAfter . A visszalépés tiszteletben tartásával biztosíthatja, hogy az újrapróbálkozások között minimális ideig várakozhasson. |
|
| Indexelés | Az Azure Cosmos DB indexelési szabályzat lehetővé teszi azt is, hogy megadja, mely dokumentum-útvonalakat kell belefoglalni vagy kizárni az indexelésből az indexelési útvonalak IndexingPolicy#getIncludedPaths() és IndexingPolicy#getExcludedPaths() használatával. A gyorsabb írás érdekében zárja ki a nem használt útvonalakat az indexelésből. Az indexek SDK-val történő létrehozásáról itt talál egy mintát |
|
| Dokumentumméret | Egy adott művelet kérelemdíja közvetlenül a dokumentum méretével függ össze. Javasoljuk, hogy csökkentse a dokumentumok méretét, mivel a nagyméretű dokumentumokon végzett műveletek többe kerülnek, mint a kisebb dokumentumokon végzett műveletek. | |
| Oldalméret | Alapértelmezés szerint a lekérdezési eredmények 100 elemből vagy 4 MB-ból álló adattömbökben jelennek meg, attól függően, hogy melyik korlátot éri el először a rendszer. Ha egy lekérdezés több mint 100 elemet ad vissza, növelje az oldalméretet a szükséges ciklikus utak számának csökkentése érdekében. A memóriahasználat az oldalméret növekedésével nő. | |
| Lekérdezési metrikák engedélyezése | A háttérbeli lekérdezések végrehajtásának további naplózásához kövesse az SQL-lekérdezési metrikák Java SDK-val történő rögzítésére vonatkozó utasításokat | |
| SDK-naplózás | Az SDK-naplózással további diagnosztikai információkat rögzíthet, és elháríthatja a késési problémákat.
A CosmosDiagnostics java SDK-ban való naplózásával részletesebb Azure Cosmos DB diagnosztikai információkat kaphat a szolgáltatásnak küldött aktuális kérésről. Példahasználati esetként rögzítse a diagnosztikát minden kivételen és befejezett műveleten, ha az CosmosDiagnostics#getDuration() nagyobb, mint egy kijelölt küszöbérték (azaz ha 10 másodperces SLA-val rendelkezik, akkor 10 másodpercnél getDuration()> rögzítse a diagnosztikát). Javasoljuk, hogy ezeket a diagnosztikákat csak a teljesítménytesztelés során használja. További információkért kövesse a rögzítési diagnosztikát a Java SDK-n |
|
| Ne használjon speciális karaktereket az azonosítókban | Egyes karakterek korlátozottak, és egyes azonosítókban nem használhatók: '/', '\', '?', '#'. Az általános javaslat az, hogy a váratlan viselkedés elkerülése érdekében ne használjon speciális karaktereket az azonosítókban, például az adatbázis neve, a gyűjtemény neve, az elemazonosító vagy a partíciókulcs. |
Ajánlott eljárások átjáró mód használatakor
Az Azure Cosmos DB-kérések HTTPS/REST protokollon keresztül lesznek intézve, amikor átjáró módot használ. Rájuk a gazdanév vagy IP-cím szerinti alapértelmezett kapcsolati korlátozás vonatkozik. Előfordulhat, hogy a maxConnectionPoolSize értékét egy másik értékre kell módosítania (100 és 1000 között), hogy az ügyfélkódtár több egyidejű kapcsolatot használjon az Azure Cosmos DB-hez. A Java v4 SDK-ban az alapértelmezett érték GatewayConnectionConfig#maxConnectionPoolSize 1000. Az érték módosításához másik értéket állíthat be GatewayConnectionConfig#maxConnectionPoolSize .
Ajánlott eljárások írási feladatokhoz
Azoknál a feladatoknál, amelyek nagy létrehozási terheléssel rendelkeznek, állítsa a CosmosClientBuilder#contentResponseOnWriteEnabled() kérési beállítást false értékre. A szolgáltatás többé nem adja vissza a létrehozott vagy frissített erőforrást az SDK-nak. Általában, mivel az alkalmazás rendelkezik a létrehozott objektummal, nem kell a szolgáltatásnak visszaadnia. A fejlécértékek továbbra is elérhetők, például egy kérelemdíj. A tartalomválasz letiltása javíthatja a teljesítményt, mivel az SDK-nak már nincs szüksége memória lefoglalására vagy a válasz törzsének szerializálására. Emellett csökkenti a hálózati sávszélesség használatát, hogy tovább segítse a teljesítményt.
Következő lépések
A Java SDK teljesítménytippjeiről további információt az Azure Cosmos DB Java SDK 4-hez készült teljesítménytippjeiben talál.
Ha többet szeretne megtudni az alkalmazás méretezéshez és nagy teljesítményhez való tervezéséről, tekintse meg a particionálást és a skálázást az Azure Cosmos DB-ben.
Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával
- Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervezővel