Perché la mia query di Amazon Redshift continua a superare il timeout WLM che ho impostato?

4 minuti di lettura
0

Ho impostato un timeout di gestione del carico di lavoro (WLM) per una query Amazon Redshift, ma la query continua a essere eseguita dopo la scadenza di questo periodo. Perché succede questo?

Breve descrizione

Il timeout WLM si applica alle query solo durante la fase di esecuzione delle stesse. Se WLM non termina una query quando previsto, in genere è perché la query ha impiegato del tempo in fasi diverse da quella di esecuzione. Ad esempio, la query potrebbe attendere di essere analizzata o riscritta, attendere un blocco, attendere un posto nella coda WLM, saltare alla fase di ritorno o a un'altra coda.

Soluzione

Quando si esegue una query su STV_RECENTS, starttime si riferisce all'ora in cui la query è entrata nel cluster, non all'ora in cui la query inizia a essere eseguita. Quando la query è allo stato In esecuzione in STV_RECENTS, è attiva nel sistema. Tuttavia, la query non utilizza le risorse del nodo di calcolo finché non entra nello stato STV_INFLIGHT. Per ulteriori informazioni sulla pianificazione delle query, consulta Pianificazione di query e flusso di lavoro di esecuzione.

Per visualizzare lo stato di una query in esecuzione, interroga STV_INFLIGHT anziché STV_RECENTS:

select * from STV_INFLIGHT where query = your_query_id;

Usa questa query per ulteriori informazioni sulle fasi dell'interrogazione:

select * from SVL_QUERY_REPORT where query = your_query_id ORDER BY segment, step, slice;

Utilizza la tabella STV_EXEC_STATE per lo stato corrente di tutte le query in esecuzione attive sui nodi di calcolo:

select * from STV_EXEC_STATE where query = your_query_id ORDER BY segment, step, slice;

Ecco alcuni motivi comuni per cui una query può sembrare in esecuzione più a lungo del periodo di timeout WLM:

La query è in fase di "ritorno"

Esistono due fasi di "ritorno". Controlla STV_EXEC_STATE per vedere se la query è entrata in una di queste fasi di ritorno:

  • Il ritorno al nodo principale dai nodi di calcolo
  • Il ritorno al client dal nodo principale

È in corso un rollback

Se un'operazione DML (linguaggio di manipolazione dei dati) rileva un errore ed esegue il rollback, l'operazione non sembra essere interrotta perché è già in fase di rollback. È possibile visualizzare i rollback interrogando STV_EXEC_STATE. È possibile trovare ulteriori informazioni in STL_UNDONE.

La query impiega del tempo in coda prima dell'esecuzione

Interroga STV_WLM_QUERY_STATE per vedere il tempo in coda:

select * from STV_WLM_QUERY_STATE where query = your_query_id;

La query è in attesa ad un blocco

Se la query è visibile in STV_RECENTS, ma non in STV_WLM_QUERY_STATE, potrebbe essere in attesa ad un blocco e non essere entrata nella coda. Per ulteriori informazioni sulla verifica della presenza di blocchi, consulta Come posso rilevare ed eliminare i blocchi in Amazon Redshift?

Una query è saltata a un'altra coda

Se una query di lettura raggiunge il limite di timeout per la coda WLM corrente o se esiste una regola di monitoraggio delle query che specifica un'azione di hop o salto, la query viene inviata alla coda WLM successiva. Per confermare se la query è saltata alla coda successiva:

Per evitare che le query saltino a un'altra coda, configura la coda WLM o le regole di monitoraggio delle query WLM. Per ulteriori informazioni sul salto della coda, consulta Saltare la coda di query in WLM.

Un problema di rete o firewall

Se un server Amazon Redshift ha problemi di comunicazione con il tuo client, il server potrebbe rimanere bloccato nello stato di "ritorno al client". Verifica la presenza di conflitti con i componenti di rete, come le impostazioni del firewall in entrata on-premise, le regole del gruppo di sicurezza in uscita o le regole della lista di controllo degli accessi alla rete (ACL) in uscita. Per ulteriori informazioni, consulta Connessione al di fuori di Amazon EC2: problema di timeout del firewall.

Un problema con il cluster

Problemi relativi al cluster stesso, quali i problemi di hardware, potrebbero causare il blocco della query. Quando ciò accade, il cluster si trova nello stato di "errore hardware". Per ripristinare un cluster a nodo singolo, ripristina uno snapshot. Nei cluster multinodali, i nodi in errore vengono automaticamente sostituiti.


Informazioni correlate

Ottimizzazione delle prestazioni delle query

Analisi e miglioramento delle query

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa