Come posso risolvere l'errore "Recupero Courier: n su m partizioni non sono state portate a termine" in OpenSearch Dashboards su Amazon OpenSearch Service?

Ultimo aggiornamento: 27-09-2021

Quando provo a caricare un pannello di controllo in OpenSearch Dashboards sul mio dominio Amazon OpenSearch Service, viene restituito un errore di recupero del corriere. Come posso risolvere questo problema?

Breve descrizione

Nota: Amazon OpenSearch Service è il successore di Amazon Elasticsearch Service.

Quando carichi un pannello di controllo in OpenSearch Dashboards, viene inviata una richiesta di ricerca al dominio di OpenSearch Services. La richiesta di ricerca viene instradata a un nodo cluster che funge da nodo di coordinamento per la richiesta. L'errore "Courier fetch: n of m shards failed" si verifica quando il nodo di coordinamento non riesce a completare la fase di recupero della richiesta di ricerca. Esistono due tipi di problemi che in genere causano questo errore:

  • Problemi persistenti: conflitti di mappatura o partizioni non assegnate. Se hai diversi indici nel tuo modello di indice che utilizzano lo stesso nome ma diversi tipi di mappatura, potresti ricevere un errore di recupero del corriere. Se il cluster è in stato di cluster rosso, significa che almeno una partizione non è assegnata. Poiché OpenSearch Service non è in grado di recuperare documenti da partizioni non assegnate, un cluster in stato rosso genera un errore di recupero del corriere. Se il valore di "n" nel messaggio di errore di recupero del corriere è lo stesso ogni volta che ricevi l'errore, è probabile che si tratti di un problema persistente. Controlla i registri degli errori dell'applicazione per suggerimenti sulla risoluzione dei problemi.
    Nota: i problemi persistenti non possono essere risolti riprovando o effettuando il provisioning di altre risorse del cluster.
  • Problemi transitori: i problemi transitori includono il rifiuto del pool di thread, i timeout di ricerca e gli interruttori automatici dei dati di campo attivati. Questi problemi si verificano quando non disponi di risorse di calcolo sufficienti nel cluster. Un problema transitorio è probabilmente la causa della ricezione del messaggio di errore in modo intermittente, con un valore diverso di "n" ogni volta. Puoi anche monitorare i parametri di Amazon CloudWatch come CPUUtilization, JVMMemoryPressure e ThreadpoolSearchRejected per determinare se un problema transitorio causa l'errore di recupero del corriere.

Risoluzione

Abilita i registri degli errori dell'applicazione per il dominio. I registri possono aiutare a identificare la causa principale e la soluzione per problemi transitori e persistenti. Per ulteriori informazioni, consulta Visualizzazione dei registri degli errori di Amazon OpenSearch Service.

Problemi persistenti

L'esempio seguente mostra una voce di registro per un errore di recupero del corriere causato da un problema persistente:

[2019-07-01T12:54:02,791][DEBUG][o.e.a.s.TransportSearchAction] [ip-xx-xx-xx-xxx] [1909731] Failed to execute fetch phase
org.elasticsearch.transport.RemoteTransportException: [ip-xx-xx-xx-xx][xx.xx.xx.xx:9300][indices:data/read/search[phase/fetch/id]]
Caused by: java.lang.IllegalArgumentException: Fielddata is disabled on text fields by default. 
Set fielddata=true on [request_departure_date] in order to load fielddata in memory by uninverting the inverted index.
Note that this can however use significant memory. Alternatively use a keyword field instead.

In questo esempio, il problema è causato dal campo request_departure_date. La voce di registro mostra che puoi risolvere questo problema impostando fielddata=true nelle impostazioni dell'indice o utilizzando un campo parola chiave.

Problemi transitori

La maggior parte dei problemi transitori può essere risolta effettuando il provisioning di più risorse di calcolo o riducendo l'utilizzo delle risorse per le query.

Provisioning di più risorse di calcolo

Riduzione dell'utilizzo delle risorse per le query

  • Verifica di seguire le best practice per l'architettura di partizioni e cluster. Un cluster mal progettato non è in grado di utilizzare tutte le risorse disponibili. Alcuni nodi potrebbero essere sovraccarichi mentre altri nodi restano inattivi. OpenSearch Service non è in grado di recuperare documenti da nodi sovraccarichi.
  • Inoltre, puoi ridurre l'ambito della query. Ad esempio, se esegui una query sull'intervallo di tempo, riduci l'intervallo di date o filtra i risultati configurando il modello di indice in Kibana.
  • Evita di eseguire query select * su indici di grandi dimensioni. Utilizza invece i filtri per eseguire query su una parte dell'indice e cercare il minor numero possibile di campi. Per ulteriori informazioni, consulta Ottimizza la velocità di ricerca e Esegui query e filtra il contesto sul sito Web Elasticsearch.
  • Reindicizza e riduci il numero di partizioni. Maggiore è il numero di partizioni presenti nel cluster, maggiore è la probabilità che si verifichi un errore di recupero del corriere. Poiché ogni partizione ha una propria allocazione di risorse e costi generali, un numero elevato di partizioni mette a dura prova il cluster. Per ulteriori informazioni, consulta Perché il dominio Amazon OpenSearch Service è bloccato nello stato "Elaborazione"?

L'esempio seguente mostra una voce di registro per un errore di recupero del corriere causato da un problema transitorio:

Caused by: org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution of org.elasticsearch.common.util.concurrent.TimedRunnable@26fdeb6f on QueueResizingEsThreadPoolExecutor
[name = __PATH__ queue capacity = 1000, min queue capacity = 1000, max queue capacity = 1000, frame size = 2000, targeted response rate = 1s, task execution EWMA = 2.9ms, adjustment amount = 50,
org.elasticsearch.common.util.concurrent.QueueResizingEsThreadPoolExecutor@1968ac53[Running, pool size = 2, active threads = 2, queued tasks = 1015, completed tasks = 96587627]]

In questo esempio, il problema è causato dai rifiuti della coda del pool di thread di ricerca. Per risolvere questo problema, aumenta il tuo dominio scegliendo un tipo di istanza più grande. Per ulteriori informazioni, consulta Pool di thread sul sito Web di Elasticsearch.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?