La query di ricerca va in timeout per i siti grandi

Ciao a tutti,

Stiamo riscontrando regolarmente timeout sulla nostra query /search. Abbiamo eseguito dei benchmark su alcuni termini di ricerca e alcune query possono richiedere fino a 2 minuti per completarsi. Abbiamo trovato questo post, ma ci chiedevamo se ci siano ulteriori raccomandazioni su come gestire il problema. Ecco alcune informazioni rilevanti relative al nostro caso specifico:

  • Il nostro sito più grande (quello che va in timeout più frequentemente) conta circa 1.700.000 post.
  • Stiamo utilizzando alcune impostazioni predefinite di autovacuum di PostgreSQL. Abbiamo raccolto alcune statistiche sulle tabelle pertinenti: categories, posts, topics, post_search_data e users; sembrano essere sottoposte a vacuum circa una volta al giorno, quindi non pensiamo che il problema sia legato a righe morte che rallentano la ricerca.
  • Abbiamo eseguito manualmente Jobs::ReindexSearch.new({}), ma non abbiamo riscontrato miglioramenti significativi.

Stiamo valutando l’esecuzione di rake search:reindex su quel sito, sapendo che richiederà comunque molto tempo, ma vorremmo sapere se avete altri suggerimenti.

Grazie in anticipo.

Un modo rapido e approssimativo per ottenere una ricerca più veloce è utilizzare le impostazioni search prefer recent posts e search recent posts size. Questo funziona molto bene dando priorità ai post recenti per riempire i risultati della ricerca.

Altrimenti, dovresti eseguire un’analisi delle prestazioni del database. Controlla i piani, i costi, ecc. Con forum di grandi dimensioni, avrai bisogno di più RAM per mantenere le prestazioni (e regolare di conseguenza le impostazioni di PostgreSQL).

Se tutto il resto fallisce, puoi anche provare Discourse Algolia Search

Ciao Falco,

Grazie per il tuo suggerimento: il trucco di search prefer recent posts ha senz’altro aiutato e le ricerche funzionano bene nella maggior parte dei casi. Sospettiamo che alcuni dei nostri indici potrebbero essere corrotti, quindi stiamo iniziando a indagare anche su quello, ma per ora questo ci aiuta moltissimo a fermare l’emorragia.