2 votos

Comprender y mejorar el uso de la memoria de sphinx searchd

Mi empresa tiene algunos servidores que dedicamos a correr Sphinx Search. Todos son CentOS 5 con aproximadamente 48GB de memoria y nuestra versión de searchd es 1.11. Recientemente he estado tratando de entender por qué Sphinx utiliza tan poco de la memoria disponible para sus índices regulares (no utilizamos índices RT en este momento). Según el sitio web oficial de Sphinx, todos los archivos relacionados con un índice, excepto los archivos .spd y .spp, se almacenan en RAM. En la actualidad esto constituye alrededor de 14GB para todos nuestros índices, que fácilmente pueden caber en RAM. Sin embargo, cuando consulto htop para ver el uso de memoria, muestra que se está utilizando un poco menos de 1.5GB. Curiosamente, también informa que se está utilizando swap, incluso con vm.swappiness establecido en 0. Si detengo searchd, el swap baja a 0. (Cabe señalar que la cantidad de swap utilizada no es mayor que la cantidad de memoria utilizada). Lo tenemos configurado para que todos nuestros índices se preabran al inicio (preopen_indexes = 1 en nuestro archivo de configuración de Sphinx).

Tengo dos preguntas, dada la información anterior:

  1. ¿Qué está haciendo Sphinx con los datos en esos índices, si no los mantiene en memoria?
  2. ¿Es posible forzar a Sphinx a mantener más datos en memoria?

1voto

jim Puntos 11

Intente mlock = 1 y reindexe todos los índices.

índice index1
{
    fuente      = main1
    ruta        = /ssd/sphinx/index.main
    tipo_de_juego_de_caracteres    = utf-8
    docinfo     = externo
    mlock       = 1
}

0voto

user1379857 Puntos 31

¿Qué está haciendo Sphinx con los datos en esos índices, si no los está manteniendo en la memoria?

Probablemente los guarda en la memoria. Pero el sistema operativo del host nota que no se están utilizando mucho, y por lo tanto los intercambia.

Se sugiere verificar que realmente se esté aplicando el swappiness.

¿Es posible forzar a Sphinx a mantener más datos en la memoria?

Si tienes memoria de sobra. ¡Pon los índices en un RAM-Disk! :)


Y si realmente tienes mucha memoria de sobra, desactiva por completo el intercambio. Existe el riesgo de un fallo si te quedas sin memoria, pero parece improbable que ocurra en ese servidor.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X