Requête de recherche qui expire pour les grands sites

Salut à tous,

Nous commençons à observer régulièrement des délais d’expiration sur notre requête /search. Nous avons effectué des tests de performance sur certains termes de recherche et certaines requêtes peuvent prendre jusqu’à 2 minutes pour s’exécuter. Nous avons trouvé ce post, mais nous nous demandons s’il existe d’autres recommandations pour gérer ce problème. Voici quelques informations pertinentes concernant notre cas particulier :

  • Notre plus grand site (celui qui rencontre le plus souvent des délais d’expiration) compte environ 1 700 000 messages.
  • Nous utilisons les paramètres par défaut d’autovacuum de PostgreSQL. Nous avons recueilli des statistiques sur les tables concernées : categories, posts, topics, post_search_data et users. Il semble que le vacuum soit exécuté environ une fois par jour, nous pensons donc que ce n’est pas dû à des lignes mortes ralentissant notre recherche.
  • Nous avons lancé manuellement Jobs::ReindexSearch.new({}), mais sans amélioration notable.

Nous envisageons d’exécuter rake search:reindex sur ce site, ce qui nous savons prendra beaucoup de temps, mais nous nous demandons si vous avez d’autres suggestions ?

Merci d’avance.

Une méthode rapide et efficace pour accélérer la recherche consiste à utiliser les paramètres « search prefer recent posts » et « search recent posts size ». Cela fonctionne très bien en donnant la priorité aux publications récentes pour remplir les résultats de recherche.

Autrement, vous devrez effectuer une analyse des performances de la base de données. Examinez les plans d’exécution, les coûts, etc. Pour les forums plus importants, vous aurez besoin de plus de RAM pour maintenir les performances (et ajuster en conséquence les paramètres de PostgreSQL).

Si tout le reste échoue, vous pouvez également essayer Discourse Algolia Search

Salut Falco,

Merci pour ta suggestion, l’astuce « recherche privilégier les publications récentes » a vraiment aidé et les recherches fonctionnent bien pour la plupart. Nous soupçonnons que certains de nos index pourraient être corrompus, nous commençons donc à enquêter là-dessus, mais cela aide énormément à arrêter l’hémorragie pour l’instant.