Risoluzione dei problemi di connessione in Amazon Redshift - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risoluzione dei problemi di connessione in Amazon Redshift

Se hai problemi con la connessione al cluster da uno strumento SQL client, puoi controllare diverse cose per restringere il problema. Se utilizzi i nostri SSL certificati server, rimuovi innanzitutto questa complessità mentre risolvi il problema di connessione. Quando trovi una soluzione, aggiungila nuovamente. Per ulteriori informazioni, consulta Configurazione delle opzioni di sicurezza per le connessioni.

Importante

Amazon Redshift ha cambiato il modo in cui vengono gestiti i SSL certificati. Se hai problemi di connessione utilizzandoSSL, potresti dover aggiornare i tuoi attuali certificati Trust Root CA. Per ulteriori informazioni, consulta Passaggio ai certificati per le connessioni ACM SSL.

La seguente sezione include alcuni messaggi di errore di esempio e le possibili soluzioni per problemi di connessione. Poiché diversi strumenti SQL client forniscono messaggi di errore diversi, questo non è un elenco completo, ma dovrebbe essere un buon punto di partenza per la risoluzione dei problemi.

Connessione dall'esterno di Amazon EC2 e problema di timeout del firewall

La connessione del client al database sembra bloccarsi o scadere quando si eseguono query lunghe, come un comando. COPY In questo caso, è possibile che la console Amazon Redshift mostri che la query è stata completata, ma lo strumento del client stesso sembra che la stia ancora eseguendo. I risultati della query potrebbero essere mancanti o incompleti, a seconda del momento in cui la connessione si è interrotta.

Possibili soluzioni

Questo problema si verifica quando ti connetti ad Amazon Redshift da un computer diverso da un'istanza AmazonEC2. In questo caso, le connessioni inattive vengono interrotte da un componente di rete intermedio, ad esempio un firewall, dopo un periodo di inattività. Questo comportamento è tipico quando si accede da una rete privata virtuale (VPN) o dalla rete locale.

Per evitare questi timeout, ti consigliamo di apportare le seguenti modifiche:

  • Aumentate i valori del sistema client che gestiscono i timeout TCP /IP. Esegui queste modifiche sul computer che stai utilizzando per connetterti al cluster. Il periodo di timeout deve essere regolato per il tuo client e la tua rete. Per ulteriori informazioni, consulta Modifica le impostazioni di timeout TCP /IP.

  • Facoltativamente, imposta il comportamento keepalive al livello. DSN Per ulteriori informazioni, consulta Modifica le DSN impostazioni del timeout.

Modifica le impostazioni di timeout TCP /IP

Per modificare le impostazioni di timeout TCP /IP, configura le impostazioni di timeout in base al sistema operativo utilizzato per connetterti al cluster.

  • Linux: se il client è in esecuzione su Linux, emettere il comando seguente come utente root per cambiare le impostazioni di timeout per la sessione corrente:

    /sbin/sysctl -w net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5

    Per mantenere le impostazioni, crea o modifica il file /etc/sysctl.conf con i seguenti valori, quindi riavvia il sistema.

    net.ipv4.tcp_keepalive_time=200 net.ipv4.tcp_keepalive_intvl=200 net.ipv4.tcp_keepalive_probes=5
  • Windows: se il client funziona su Windows, modifica i valori per le seguenti impostazioni del registro in HKEY _ LOCAL _MACHINE\\\ Services\ SYSTEM CurrentControlSet Tcpip\ Parameters\:

    • KeepAliveTime: 30000

    • KeepAliveInterval: 1000

    • TcpMaxDataRetransmissions: 10

    Queste impostazioni utilizzano il tipo di DWORD dati. Se non esistono nel percorso di registro, è possibile creare le impostazioni e specificare questi valori raccomandati. Per ulteriori informazioni sulla modifica del registro di Windows, consultare la documentazione di Windows.

    Dopo aver impostato questi valori, riavvia il computer per rendere effettive le modifiche.

  • Mac: se il client è in esecuzione su un Mac, emettere i comandi seguenti per cambiare le impostazioni di timeout per la sessione corrente:

    sudo sysctl net.inet.tcp.keepintvl=200000 sudo sysctl net.inet.tcp.keepidle=200000 sudo sysctl net.inet.tcp.keepinit=200000 sudo sysctl net.inet.tcp.always_keepalive=1

    Per mantenere le impostazioni, crea o modifica il file /etc/sysctl.conf con i seguenti valori:

    net.inet.tcp.keepidle=200000 net.inet.tcp.keepintvl=200000 net.inet.tcp.keepinit=200000 net.inet.tcp.always_keepalive=1

    Riavvia il computer, quindi esegui i comandi seguenti per verificare che i valori siano stati impostati.

    sysctl net.inet.tcp.keepidle sysctl net.inet.tcp.keepintvl sysctl net.inet.tcp.keepinit sysctl net.inet.tcp.always_keepalive

Modifica le DSN impostazioni del timeout

Se lo desideri, puoi impostare il comportamento di keepalive al DSN livello che preferisci. Puoi farlo aggiungendo o modificando i parametri seguenti nel file odbc.ini:

KeepAlivesCount

Il numero di pacchetti TCP keepalive che possono essere persi prima che la connessione venga considerata interrotta.

KeepAlivesIdle

Il numero di secondi di inattività prima che il driver invii un TCP pacchetto keepalive.

KeepAlivesInterval

Il numero di secondi tra ogni TCP ritrasmissione keepalive.

Se questi parametri non esistono o se hanno il valore 0, il sistema utilizza i parametri keepalive specificati per TCP /IP per determinare il comportamento di keepalive. DSN In Windows, è possibile trovare i parametri TCP /IP nel registro in. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ Su Linux e macOS, puoi trovare i parametri TCP /IP nel file sysctl.conf.

Connessione rifiutata o non riuscita

Se la connessione viene rifiutata o fallita, è possibile che venga visualizzato un errore simile a uno dei seguenti.

  • «Impossibile stabilire una connessione a <endpoint>."

  • "Could not connect to server: Connection timed out. Il server è in esecuzione sull'host '<endpoint>' e accetta connessioni TCP /IP sulla porta '<port>'?"

  • "Connection refused. Verifica che il nome host e la porta siano corretti e che il postmaster accetti connessioni TCP /IP.»

Possibili soluzioni

Generalmente, quando ricevi un messaggio di errore che indica l'impossibilità di stabilire una connessione, ciò significa che c'è un problema con l'autorizzazione per l'accesso al cluster o con il traffico di rete che raggiunge il cluster.

Per connetterti al cluster da uno strumento client esterno alla rete in cui si trova il cluster stesso, aggiungi una regola di ingresso al gruppo di sicurezza del cluster. La configurazione delle regole dipende dal fatto che il cluster Amazon Redshift venga creato in un cloud privato virtuale ()VPC:

  • Se hai creato il cluster Amazon Redshift in un cloud privato virtuale (VPC) basato su AmazonVPC, aggiungi una regola in entrata al gruppo di VPC sicurezza che specifica l'CIDRindirizzo IP del client, in Amazon. VPC Per ulteriori informazioni sulla configurazione dei gruppi di VPC sicurezza per il cluster e sulle opzioni accessibili al pubblico, consulta. Risorse Redshift in un VPC

  • Se hai creato il tuo cluster Amazon Redshift all'esterno di unVPC, aggiungi il tuo indirizzo CIDR client/IP al gruppo di sicurezza del cluster in Amazon Redshift. Per ulteriori informazioni sulla configurazione di gruppi di sicurezza dei cluster, consulta Gruppi di sicurezza Amazon Redshift.

Se tenti di connetterti al cluster da uno strumento client eseguito su un'EC2istanza Amazon, aggiungi anche una regola in entrata. In questo caso, aggiungi una regola al gruppo di sicurezza del cluster. La regola deve specificare il gruppo EC2 di sicurezza Amazon associato all'EC2istanza Amazon dello strumento client.

In alcuni casi, potrebbe essere presente un layer tra il client e il server, ad esempio un firewall. In questi casi, assicurarti che il firewall accetti le connessioni in ingresso sulla porta configurata per il cluster.

Incompatibilità tra client e driver

Se il client e il driver non sono compatibili, potresti ricevere un errore che dice: «Il file specificato DSN contiene una mancata corrispondenza dell'architettura tra il driver e l'applicazione».

Possibili soluzioni

Quando tenti di connetterti e ricevi un errore relativo a una mancata corrispondenza dell'architettura, ciò significa che lo strumento client e il driver non sono compatibili. Ciò si verifica perché la loro architettura di sistema non corrisponde. Ad esempio, ciò può accadere se disponi di uno strumento client a 32 bit ma hai installato una versione a 64 bit del driver. Talvolta gli strumenti client a 64 bit possono utilizzare driver a 32 bit, ma non è possibile usare applicazioni a 32 bit con driver a 64 bit. Assicurati che il driver e lo strumento client utilizzino la stessa versione dell'architettura di sistema.

Query bloccate e talvolta impossibilitate a raggiungere il cluster

Si verifica un problema con il completamento delle query, che sembrano essere in esecuzione ma si bloccano nello strumento client. SQL Talvolta le query non vengono visualizzate nel cluster, come nelle tabelle di sistema o nella console Amazon Redshift.

Possibili soluzioni

Questo problema può verificarsi a causa della perdita dei pacchetti. In questo caso, esiste una differenza nella dimensione massima dell'unità di trasmissione (MTU) nel percorso di rete tra due host IP (Internet Protocol). La MTU dimensione determina la dimensione massima, in byte, di un pacchetto che può essere trasferito in un frame Ethernet tramite una connessione di rete. In AWS, alcuni tipi di EC2 istanza Amazon supportano 1500 (frame Ethernet v2) e altri tipi di istanza supportano 9001 (frame jumbo TCP /IP). MTU MTU

Per evitare problemi che possono verificarsi con differenze di MTU dimensioni, consigliamo di effettuare una delle seguenti operazioni:

  • Se il tuo cluster utilizza la VPC piattaforma EC2 -, configura il gruppo di VPC sicurezza Amazon con una regola Internet Control Message Protocol (ICMP) personalizzata in entrata che restituiscaDestination Unreachable. La regola indica quindi all'host di origine di utilizzare la MTU dimensione più bassa lungo il percorso di rete. Per i dettagli su questo approccio, consulta Configurazione dei gruppi di sicurezza per consentire la «destinazione irraggiungibile» ICMP.

  • Se il tuo cluster utilizza la piattaforma EC2 -Classic o non puoi consentire la regola in ICMP entrata, disabilita i jumbo frame TCP /IP in modo che vengano utilizzati i frame Ethernet v2. Per i dettagli su questo approccio, consulta Configurazione MTU di un'istanza.

Configurazione dei gruppi di sicurezza per consentire la «destinazione irraggiungibile» ICMP

Quando c'è una differenza nelle MTU dimensioni della rete tra due host, assicurati innanzitutto che le impostazioni di rete non blocchino il path MTU discovery (). PMTUD PMTUDconsente all'host ricevente di rispondere all'host di origine con il seguente ICMP messaggio:Destination Unreachable: fragmentation needed and DF set (ICMP Type 3, Code 4). Questo messaggio indica all'host di origine di utilizzare la MTU dimensione più bassa lungo il percorso di rete per inviare nuovamente la richiesta. Senza questa negoziazione, può verificarsi la perdita del pacchetto perché la richiesta è troppo grande per l'host ricevente. Per ulteriori informazioni su questo ICMP messaggio, visitate il sito Web di RFC792Internet Engineering Task Force () IETF.

Se non configuri esplicitamente questa regola ICMP in entrata per il tuo gruppo di VPC sicurezza Amazon, PMTUD è bloccata. In AWS, i gruppi di sicurezza sono firewall virtuali che specificano le regole per il traffico in entrata e in uscita verso un'istanza. Per informazioni sui gruppi di sicurezza dei cluster Amazon Redshift, consultare Gruppi di sicurezza Amazon Redshift. Per i cluster che utilizzano la VPC piattaforma EC2 -, Amazon Redshift VPC utilizza gruppi di sicurezza per consentire o negare il traffico verso il cluster. Per impostazione predefinita, i gruppi di sicurezza sono bloccati e rifiutano tutto il traffico in entrata. Per informazioni su come impostare le regole in entrata e in uscita per le istanze EC2 -Classic o EC2 -, consulta Differenze tra VPC le istanze in EC2 -Classic e a nella VPC Amazon User Guide. EC2

Per ulteriori informazioni su come aggiungere regole ai gruppi di sicurezza, consulta. VPC VPCgruppi di sicurezza Per ulteriori informazioni sulle PMTUD impostazioni specifiche richieste in questa regola, consulta Path MTU discovery nella Amazon EC2 User Guide.

Configurazione MTU di un'istanza

In alcuni casi, il cluster potrebbe utilizzare la piattaforma EC2 -Classic oppure non è possibile consentire la ICMP regola personalizzata per il traffico in entrata. In questi casi, ti consigliamo di regolarlo MTU a 1500 sull'interfaccia di rete (NIC) delle EC2 istanze da cui ti connetti al cluster Amazon Redshift. Questa regolazione disabilita i jumbo frame TCP /IP per garantire che le connessioni utilizzino costantemente la stessa dimensione di pacchetto. Tuttavia, questa opzione riduce la velocità effettiva massima della rete per l'intera istanza, non solo per le connessioni ad Amazon Redshift. Per ulteriori informazioni, consultare le procedure seguenti.

Per impostare MTU su un sistema operativo Microsoft Windows

Se il client viene eseguito in un sistema operativo Microsoft Windows, è possibile esaminare e impostare il MTU valore per l'adattatore Ethernet utilizzando il netsh comando.

  1. Eseguite il comando seguente per determinare il MTU valore corrente:

    netsh interface ipv4 show subinterfaces
  2. Rivedere il valore MTU per la scheda Ethernet nell'output.

  3. Se il valore non è 1500, eseguire il seguente comando per impostarlo:

    netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent

    Dopo aver impostato questo valore, riavviare il computer per rendere effettive le modifiche.

Da impostare MTU su un sistema operativo Linux

Se il client viene eseguito in un sistema operativo Linux, è possibile rivedere e impostare il MTU valore utilizzando il ip comando.

  1. Eseguite il comando seguente per determinare il MTU valore corrente:

    $ ip link show eth0
  2. Rivedere il valore successivo a mtu nell'output.

  3. Se il valore non è 1500, eseguire il seguente comando per impostarlo:

    $ sudo ip link set dev eth0 mtu 1500
Da impostare MTU su un sistema operativo Mac
  • Seguire le istruzioni sul sito di supporto macOS per How to change the MTU for troubleshooting purposes. Per ulteriori informazioni, cercare nel sito del supporto.

Impostazione del parametro JDBC fetch size

Per impostazione predefinita, il JDBC driver raccoglie tutti i risultati di una query contemporaneamente. Di conseguenza, quando si tenta di recuperare un set di risultati di grandi dimensioni tramite una JDBC connessione, è possibile che si verifichi un errore sul lato client out-of-memory. Per consentire al client di recuperare i set di risultati in batch anziché in un singolo recupero, impostate il all-or-nothing JDBC parametro fetch size nell'applicazione client.

Nota

La dimensione di recupero non è supportata per. ODBC

Per le migliori prestazioni, imposta la dimensione del recupero sul valore più alto che non porti a errori di esaurimento della memoria. Un valore della dimensione del recupero più basso causa più viaggi del server, quindi tempi di esecuzione prolungati. Il server riserva le risorse, incluso lo slot di WLM query e la memoria associata, finché il client non recupera l'intero set di risultati o la query non viene annullata. Quando ottimizzi in modo appropriato la dimensione del recupero, queste risorse vengono rilasciate più velocemente rendendole disponibili alle altre query.

Nota

Se devi estrarre set di dati di grandi dimensioni, ti consigliamo di utilizzare un'UNLOADistruzione per trasferire i dati su Amazon S3. Quando si utilizzaUNLOAD, i nodi di calcolo funzionano in parallelo per accelerare il trasferimento dei dati.

Per ulteriori informazioni sull'impostazione del parametro JDBC fetch size, vai a Ottenere risultati in base a un cursore nella documentazione di Postgre. SQL