Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara oraQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
SI APPLICA A: NoSQL
Importante
Questo articolo illustra la risoluzione dei problemi solo per Python SDK di Azure Cosmos DB. Per altre informazioni, vedere note sulla versione leggimi di Python SDK di Azure Cosmos DB, Package (PyPI), Package (Conda) e suggerimenti sulle prestazioni.
Questo articolo illustra i problemi comuni, le soluzioni alternative, i passaggi di diagnostica e gli strumenti quando si usa Azure Cosmos DB Python SDK con gli account Azure Cosmos DB per NoSQL. Azure Cosmos DB Python SDK fornisce una rappresentazione logica lato client per accedere ad Azure Cosmos DB per NoSQL. Questo articolo descrive strumenti e approcci utili ad affrontare eventuali problemi.
Iniziamo con un elenco:
*Cosmos*
.*Cosmos*
.Importante
È consigliabile usare la versione più recente di Python SDK. È possibile controllare la cronologia delle versioni qui
Questa libreria usa la libreria di registrazione standard per la diagnostica della registrazione. Le informazioni di base sulle sessioni HTTP (URL, intestazioni e così via), vengono registrate a livello di informazioni.
La registrazione dettagliata del livello DEBUG, inclusi i corpi di richiesta/risposta e le intestazioni non contrassegnate, può essere abilitata in un client con l'argomento logging_enable
:
import sys
import logging
from azure.cosmos import CosmosClient
# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
# This client will log detailed information about its HTTP sessions, at DEBUG level
client = CosmosClient(URL, credential=KEY, logging_enable=True)
Analogamente, logging_enable
può abilitare la registrazione dettagliata per una singola operazione, anche quando non è abilitata per il client:
database = client.create_database(DATABASE_NAME, logging_enable=True)
In alternativa, è possibile registrare usando CosmosHttpLoggingPolicy
, che si estende dal core HttpLoggingPolicy
di Azure , passando il logger all'argomento logger
.
Per impostazione predefinita, userà il comportamento di HttpLoggingPolicy
. Il passaggio dell'argomento enable_diagnostics_logging
abiliterà CosmosHttpLoggingPolicy
e avrà informazioni aggiuntive nella risposta relativa al debug dei problemi di Cosmos.
import logging
from azure.cosmos import CosmosClient
#Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)
# Configure a file output
handler = logging.FileHandler(filename="azure")
logger.addHandler(handler)
# This client will log diagnostic information from the HTTP session by using the CosmosHttpLoggingPolicy.
# Since we passed in the logger to the client, it will log information on every request.
client = CosmosClient(URL, credential=KEY, logger=logger, enable_diagnostics_logging=True)
Analogamente, la registrazione può essere abilitata per una singola operazione passando un logger alla singola richiesta.
Tuttavia, se si desidera utilizzare CosmosHttpLoggingPolicy
per ottenere informazioni aggiuntive, l'argomento enable_diagnostics_logging
deve essere passato nel costruttore client.
# This example enables the `CosmosHttpLoggingPolicy` and uses it with the `logger` passed in to the `create_database` request.
client = CosmosClient(URL, credential=KEY, enable_diagnostics_logging=True)
database = client.create_database(DATABASE_NAME, logger=logger)
Vedere la guida per la progettazione di applicazioni resilienti con Azure Cosmos DB SDK per indicazioni su come progettare applicazioni resilienti e conoscere la semantica di retry dell'SDK.
Per prestazioni ottimali:
Controllare le metriche del portale per determinare se si tratta di un problema sul lato client o se si è verificato un problema con il servizio. Ad esempio, se le metriche contengono una frequenza elevata di richieste a velocità limitata (codice di stato HTTP 429), significa che la richiesta viene limitata. Controllare la sezione Frequenza richieste troppo grande.
La limitazione delle connessioni può verificarsi a causa di un [limite di connessione in un computer host] o di [esaurimento delle porte SNAT (PAT) di Azure].
Alcuni sistemi Linux, come Red Hat, prevedono un limite massimo per il numero totale di file aperti. I socket in Linux vengono implementati come file, per cui questo numero limita anche il numero totale di connessioni. Esegui il comando seguente:
ulimit -a
Il numero massimo consentito di file aperti, identificati come "nofile", deve essere almeno il doppio della dimensione del pool di connessioni. Per altre informazioni, vedere i suggerimenti sulle prestazioni di Python SDK per Azure Cosmos DB.
Se l'app viene distribuita in macchine virtuali di Azure senza un indirizzo IP pubblico, per impostazione predefinita le porte SNAT di Azure stabiliscono le connessioni a qualsiasi endpoint all'esterno della macchina virtuale. Il numero di connessioni consentite dalla macchina virtuale all'endpoint di Azure Cosmos DB è limitato dalla configurazione SNAT di Azure.
Le porte SNAT di Azure vengono usate solo quando la macchina virtuale ha un indirizzo IP privato e un processo dalla macchina virtuale prova a connettersi a un indirizzo IP pubblico. Esistono due soluzioni alternative per evitare la limitazione per le porte SNAT di Azure:
Aggiungere l'endpoint del servizio Azure Cosmos DB alla subnet della rete virtuale di macchine virtuali di Azure. Per altre informazioni, vedere Endpoint servizio di rete virtuale di Azure.
Quando l'endpoint del servizio è abilitato, le richieste non vengono più inviate da un indirizzo IP pubblico ad Azure Cosmos DB. Vengono invece inviate le identità di rete virtuale e subnet. Questa modifica può comportare blocchi del firewall se sono consentiti solo indirizzi IP pubblici. Se si usa un firewall, quando si abilita l'endpoint del servizio, aggiungere una subnet al firewall tramite ACL di rete virtuale.
Assegnare un indirizzo IP pubblico alla macchina virtuale di Azure.
azure.core.exceptions.ServiceRequestError:
indica che l'SDK non riesce a raggiungere il servizio. Seguire il limite di connessione in un computer host.
Il certificato HTTPS dell'emulatore di Azure Cosmos DB è autofirmato. Affinché Python SDK funzioni con l'emulatore, importare il certificato dell'emulatore. Per altre informazioni, vedere Esportare i certificati dell'emulatore di Azure Cosmos DB.
Se si usa un proxy HTTP, assicurarsi che possa supportare il numero di connessioni configurate in ConnectionPolicy
dell'SDK.
In caso contrario, verranno riscontrati problemi di connessione.
Le metriche di query consentono di determinare dove la query sta spendendo la maggior parte del tempo. Dalle metriche di query è possibile visualizzare la quantità di spesa per il back-end rispetto al client. Per altre informazioni, vedere la guida alle prestazioni delle query.
Eventi
Ottieni gratuitamente la certificazione in Microsoft Fabric.
19 nov, 23 - 10 dic, 23
Per un periodo di tempo limitato, il team della community di Microsoft Fabric offre buoni per esami DP-600 gratuiti.
Prepara ora