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:
- ¿Qué está haciendo Sphinx con los datos en esos índices, si no los mantiene en memoria?
- ¿Es posible forzar a Sphinx a mantener más datos en memoria?