¿Cómo se resuelve el error “Obtención de servicio de mensajería: n de m particiones fallidas” env OpenSearch Dashboards en Amazon OpenSearch Service?

6 minutos de lectura
0

Al intentar cargar un panel en OpenSearch Dashboards en mi dominio de Amazon OpenSearch Service, aparece un error de obtención de servicio de mensajería. ¿Cómo puedo solucionarlo?

Descripción breve

Al cargar un panel en OpenSearch Dashboards, se envía una petición de búsqueda al dominio de OpenSearch Service. La solicitud de búsqueda se dirige a un nodo de clúster que actúa como nodo coordinador de la solicitud. El error “Courier fetch: n of m shards failed” (Obtención de servicio de mensajería: n de m particiones fallidas) se produce cuando el nodo coordinador no completa la fase de obtención de la solicitud de búsqueda. Hay dos tipos de problemas que suelen provocar este error:

  • Problemas persistentes: conflictos de mapeo o particiones no asignadas. Si tiene varios índices en su patrón de índice con el mismo nombre, pero diferentes tipos de asignación, es posible que aparezca un error Courier fetch (Obtención de servicio de mensajería). Si el clúster se encuentra en estado de clúster rojo, significa que al menos una partición no está asignada. Dado que OpenSearch Service no puede obtener documentos de particiones no asignadas, un clúster en estado rojo genera un error Courier fetch (Obtención de servicio de mensajería). Si el valor de “n” en el mensaje del error Courier fetch (Obtención de servicio de mensajería) es el mismo cada vez que recibe el error, es probable que se trate de un problema persistente. Consulte los registros de errores de la aplicación para obtener sugerencias de resolución de problemas.
    Nota: Los problemas persistentes no se pueden resolver si vuelve a intentar o si aprovisiona más recursos de clúster.
  • Problemas transitorios: entre los problemas transitorios se encuentran los rechazos de grupos de subprocesos, tiempos de espera de las búsquedas e interruptores de datos de campo disparados. Estos problemas se producen cuando no existen recursos informáticos suficientes en el clúster. Es probable que, si recibe un mensaje de error de forma intermitente con un valor de “n” siempre diferente, se trate de un problema transitorio. También puede monitorear métricas de Amazon CloudWatch, como CPUUtilization, JVMMemoryPressure y ThreadPoolSearchRejected, para determinar si la causa del error de recuperación de Courier es un problema transitorio.

Resolución

Habilite los registros de errores de aplicación para el dominio. Los registros pueden ayudarlo a identificar la causa raíz y la solución de problemas transitorios y persistentes. Para obtener más información, consulte Visualización de los registros de error de OpenSearch Service.

Problemas persistentes

En el siguiente ejemplo, se puede visualizar una entrada de registro de un error de obtención de servicio de mensajería causado por 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.

En este ejemplo, el problema se debe al campo request_departure_date. La entrada del registro demuestra que este problema se puede resolver si establece fielddata=true en la configuración del índice o mediante un campo de palabra clave.

Problemas transitorios

La mayoría de los problemas transitorios se pueden resolver mediante el aprovisionamiento de más recursos informáticos o la reducción de la utilización de recursos para sus consultas.

Aprovisionamiento de más recursos informáticos

Reducción de la utilización de recursos para sus consultas

  • Confirme que sigue las prácticas recomendadas para la arquitectura de partición y clúster. Un clúster mal diseñado no puede utilizar todos los recursos disponibles. Algunos nodos pueden sobrecargarse mientras otros están inactivos. OpenSearch Service no puede recuperar documentos de nodos sobrecargados.
  • También puede reducir el alcance de la consulta. Por ejemplo, si realiza una consulta en el marco temporal, reduzca el intervalo de fechas o filtre los resultados mediante la configuración del patrón de índice en Kibana.
  • Evite ejecutar consultas de selección* en índices grandes. En su lugar, utilice filtros para consultar una parte del índice y realizar búsquedas en la menor cantidad de campos posible. Para obtener más información, consulte Tune for search speed (Ajustar la velocidad de búsqueda) y Query and filter context (Contexto de consulta y filtro) en el sitio web de Elasticsearch.
  • Vuelva a indexar y reduzca la cantidad de particiones. Cuantas más particiones tenga en el clúster, más probable será que reciba un error de obtención de servicio de mensajería. Dado que cada partición tiene su propia asignación de recursos y cargas, una gran cantidad de particiones ejerce una presión excesiva en el clúster. Para obtener más información, consulte ¿Por qué el dominio de OpenSearch Service está atascado en el estado “Procesando”?

En el siguiente ejemplo, se muestra una entrada de registro de un error de obtención de servicio de mensajería a causa de un error 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]]

En este ejemplo, el problema se debe a los rechazos de la cola de grupos de subprocesos de búsquedas. Para resolver este problema, escale verticalmente el dominio mediante la elección de un tipo de instancia más grande. Para obtener más información, consulte Grupos de subprocesos en el sitio web de Elasticsearch.


Información relacionada

Prácticas recomendadas de Amazon OpenSearch Service

Resolución de problemas de Amazon OpenSearch Service

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años