es experimento de fusión de segmentos forzados

es Experimento de fusión de segmentos forzados – Noche que desaparece,

1. Preguntas

Debido a la limitación de espacio en disco del clúster, eliminamos más de mil millones de datos, pero descubrimos que después de la eliminación, el espacio disponible en el disco no aumentó rápidamente. El motivo es que el documento eliminado de es no se elimina físicamente, sino que se marca como "estado eliminado". Cuando se produce una fusión, se eliminará físicamente.

Si un índice tiene demasiados índices en estado eliminado, afectará la eficiencia de la consulta. Según este artículo1 , más del 50 % de los documentos se marcan como eliminados, lo que da como resultado una disminución del rendimiento de búsqueda de alrededor del 30 %.

Debido a que los documentos eliminados permanecen en el índice, aún deben decodificarse de las listas de publicaciones y luego omitirse durante la búsqueda, por lo que hay un costo de búsqueda adicional. Para comprobar cuánto, realicé una prueba de rendimiento de búsqueda para distintas consultas usando el índice de documentos de 100 M sin eliminar como referencia y el mismo índice con un 50 % de documentos eliminados (es decir, 150 M de documentos con 50 M eliminados). Ambos índices fueron de un solo segmento. Aquí están los resultados:

Consulta SWC Desv.estándar QPS con eliminaciones StdDev con eliminaciones % cambiar
consulta de rango int 1.2 (5,1%) 0.6 (1,8%) 46%
consulta de prefijo 5.7 (5,0%) 3.4 (2,3%) 41%
Comodín 5.3 (4,4%) 3.2 (2,2%) 39%
y alto + bajo 91.1 (2,0%) 59.5 (2,1%) 34%
Frase médica 36.2 (2,8%) 24.4 (1,3%) 32%
y alto + medio 16.6 (1,5%) 11.2 (1,0%) 32%

……

La mala noticia es que claramente hay un costo de rendimiento no trivial para los documentos eliminados, y esto es algo en lo que podemos trabajar para reducirlo con el tiempo (¡los parches son bienvenidos!). La buena noticia es que el costo suele ser un poco más bajo que el porcentaje de eliminaciones (50 % en esta prueba) porque estos documentos se filtran a un nivel bajo antes de que cualquiera de los costosos evaluadores y comparadores de consultas los vea. Las consultas más costosas (Phrase, Span) tienden a tener el impacto más bajo, lo que también es bueno porque son las consultas lentas las que determinan la capacidad del nodo para la mayoría de las aplicaciones.

Pero dado que la fusión forzada conduciría a una alta carga de clúster, primero se probó un índice pequeño.

2. Fusionar a la fuerza índices pequeños

El pequeño índice ocupa el siguiente

 
 

 
 

1

docs.count docs.deleted store.size

2

6176077350 417260277 1.4tb

1. Primero realice una actualización de escritura

Actualizar y escribir hasta que no se genere ningún error.

 
 

 
 

1

POST index_business_v1/_flush/synced

2. Desactive el permiso de escritura de índice

 
 

 
 

1

PUT index_business_v1/_settings

2

{
  
  

3

  "índice": {
  
  

4

    "bloques.escribir": verdadero

5

  }

6

}

3. Ejecución de una fusión obligatoria

ES8.x puede agregar wait_for_completion=falseuna respuesta de bloqueo innecesaria, only_expunge_deletes=truelo que significa que solo se fusionan los segmentos que contienen una cierta cantidad de elementos eliminados. Esta cierta cantidad la index.merge.policy.expunge_deletes_allowedcontrola el usuario, y el valor predeterminado es 10,0, lo que significa que si un fragmento eliminado/total supera el 10 %, el fragmento se fusionará.

 
 

 
 

1

POST /index_business_v1/_forcemerge?only_expunge_deletes=true

4. Ver el progreso de la tarea

 
 

 
 

1

GET _tasks?detailed=true&actions=*forcemerge&human

2

o POST _tasks/rZqBdGdSTGy2qdyZAtDD6Q:3358737

3

 
 

4

rZqBdGdSTGy2qdyZAtDD6Q:3604476

3. Cambiar el esquema de fusión

Después de habilitar only_expunge_deletes=trueel parámetro, por defecto, el resultado combinado:

eliminado se ha reducido en 300 millones. Según el cálculo, el espacio libre real es de aproximadamente 70 GB. Por lo tanto, de forma predeterminada, la fusión forzada puede reducir en gran medida la tasa de uso del disco y, cuanto mayor sea la tasa de eliminación, mayor será la reducción de la tasa de uso.

Sin embargo, debido a que el índice en el entorno de producción es demasiado grande, debe dividirse, por lo tanto, antes de dividir, elimine los documentos eliminados tanto como sea posible y aumente la tasa de eliminación configurando parámetros:

 
 

 
 

1

PUT base_domain/_settings

2

{
  
  

3

  "index.merge.policy.expunge_deletes_allowed": "5.0"

4

}

 
 

 
 

1

index docs.count docs.deleted store.size

2

ip 12503736313 4207846666 40.2tb

Calculando: 4207846666/(4207846666+12503736313)∗40≈10��, se pueden liberar al menos 10 TB de datos. Además, marcar eliminado también consume espacio en disco, por lo que se estima que al final se pueden liberar 12 TB.

Durante el proceso de fusión, experimentará un proceso de aumento repetido en el uso del disco -> disminución del uso del disco. En esta prueba, 40 TB aumentaron a 44 TB y luego comenzaron a disminuir. Por lo tanto, al fusionarse, debe reservar algo de espacio de acuerdo con la situación del índice; de ​​lo contrario, fallará directamente.

Después de aproximadamente 1,1 días, se completó la fusión, el uso del disco se redujo de 40 TB a 22 TB y se liberaron 18 TB de espacio. Sin embargo, hay algunos segmentos relativamente grandes en cada fragmento, el más grande alcanza los 40 GB.

4. Ver información del segmento

1. Verifique qué índices se están fusionando actualmente

 
 

 
 

1

OBTENER /_cat/índices/?s=recuento de segmentos:desc&v&h=índice,recuento de segmentos,memoria de segmentos,total de memoria,mergesCurrent,mergesCurrentDocs,storeSize,p,r
índice segmentosCount segmentosMemoria total de memoria fusiona actual fusionaCurrentDocs storeSize pag r
dominio 22766 7.5gb 12,2 gb 48 21343329 87,5 TB 160 0
ip 14270 13,3 gb 50.7gb 47 18168708 40,4 tb 160 0
DNS 2220 2.8gb 15,8 gb 0 0 3,7 tb 60 0

2. Consultar el estado de cada segmento de un índice

 
 

 
 

1

OBTENER _cat/segments?index=sumap_domain*&v&s=docs.deleted:desc
índice casco preparación ip segmento generación docs.count docs.borrado tamaño tamaño.memoria comprometido buscable versión compuesto
índice_dominio 36 pag 172.16.80.1 _stmt 1344773 161171 692426 4.3gb 1181094 verdadero verdadero 8.2.0 verdadero

3. Ver el estado eliminado de un índice como un todo

 
 

 
 

1

OBTENER _cat/indices?index=sumap_domain*&v&h=index,docs.count,docs.deleted,store.size
índice docs.count docs.borrado tienda.tamaño
dominio 2683311417 943551705 87,5 TB

5. Problemas causados ​​por la fusión forzada

La combinación forzada dará como resultado segmentos >= 5 GB. No está claro qué sucederá cuando el tamaño de un segmento alcance los 100 GB. La obtención de datos a través de consultas actualmente da como resultado:

  1. Si continúa actualizando el segmento, la combinación de fondo no se preocupará por el segmento> = 5 GB, y debe ejecutar manualmente forcemerge

referencia


1 ¿ Cómo afectan los documentos eliminados al rendimiento de la búsqueda?

Supongo que te gusta

Origin blog.csdn.net/qq_32907195/article/details/131458636
Recomendado
Clasificación