La consulta de búsqueda se agota para sitios grandes

Hola a todos,

Hemos comenzado a experimentar timeouts de forma regular en nuestra consulta /search. Hemos realizado pruebas de rendimiento con algunos términos de búsqueda y algunas consultas pueden tardar hasta 2 minutos en completarse. Encontramos esta publicación, pero nos preguntamos si hay alguna recomendación adicional sobre cómo abordar este problema. A continuación, información relevante sobre nuestro caso particular:

  • Nuestro sitio más grande (el que presenta más frecuentes timeouts) tiene aproximadamente 1.700.000 publicaciones.
  • Estamos utilizando la configuración predeterminada de autovacuum de PostgreSQL. Hemos recopilado estadísticas sobre las tablas relevantes: categories, posts, topics, post_search_data y users, y parece que se ejecuta el vacuum aproximadamente una vez al día, por lo que no creemos que esto tenga que ver con filas muertas que estén ralentizando nuestra búsqueda.
  • Hemos ejecutado manualmente Jobs::ReindexSearch.new({}), pero no observamos ninguna mejora considerable.

Estamos considerando ejecutar rake search:reindex en ese sitio, lo cual sabemos que tomará bastante tiempo, pero nos preguntamos si tienen alguna otra sugerencia.

Gracias de antemano.

Una forma rápida y sencilla de obtener una búsqueda más rápida es usar la configuración search prefer recent posts y search recent posts size. Esto funciona muy bien al priorizar las publicaciones recientes primero para rellenar los resultados de búsqueda.

Además de eso, necesitarías realizar un análisis del rendimiento de la base de datos. Revisa los planes, costos, etc. En foros más grandes, necesitarás más RAM para mantener el rendimiento (y ajustar la configuración de PostgreSQL en consecuencia).

Si todo lo demás falla, también puedes probar Discourse Algolia Search

Hola Falco,

Gracias por tu sugerencia; el truco de search prefer recent posts definitivamente ayudó y las búsquedas funcionan bien en su mayoría. Sospechamos que algunos de nuestros índices podrían estar corruptos, así que también estamos empezando a investigar eso, pero esto ayuda enormemente a detener el problema por ahora.