Websearch Stress Test: Limites et performances

Tests réalisés sur la branche en cours de développement #pg.

Materiel

  • Processeur: Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
  • RAM: 32GB DDR3 @1333 MT/s
  • Stockage: SSD Samsung 860
  • Default postgresql v15 cluster configuration for debian 12

Evolution du temps de réponse en fonction du nombre de scènes

Avant optimisation de la requête de recherche

Les tests sont réalisés sur au moins 20 requêtes avec σ<1%

Optimisation

modification de la configuration du cluster à n=4000 scènes.

Augmenter shared_buffers semble accélérer légèrement (~5%) les requêtes de recherche (~

Changer la valeur de work_mem ou de temp_buffers n’influence pas sensiblement les performance pour GET /scenes ou GET /history/:scene.

Modification de la requête

Analyse des performance avec Postgresql: performance et optimisation

Les différents JOIN étaient effectués sur l’ensemble des scènes, avant filtrage par ?match=<terms>. Pré-filtrer les scènes supprime le caractère exponentiel de la requête.

L’utilisation de languageen paramètre dynamique de websearch_to_tsvector() empêchait postrgesql d’utiliser l’index GIN scenes_search_idx.

Running a search took 46ms with σ=5 (4000 scenes)