Mise à l'échelle pour la latence des requêtes
La latence d'une seule requête est déterminée par le composant le plus lent du chemin d'exécution de la requête. Elle est parfois corrélée au débit, mais pas toujours — le débit et la latence sont des directions de réglage opposées.
L'optimisation pour une faible latence vise à utiliser la saturation maximale des ressources pour une seule requête, tandis que l'optimisation du débit vise à minimiser l'utilisation des ressources par requête pour permettre plus de requêtes en parallèle.
Réglage des performances pour une latence réduite
- Augmentez le nombre de segments pour correspondre aux cœurs CPU (
default_segment_number: 16) Minimisation de la latence - Conservez les vecteurs quantifiés et HNSW en RAM (
always_ram=true) - Réduisez
hnsw_efau moment de la requête (échangez le rappel contre la vitesse) Paramètres de recherche - Utilisez NVMe local, évitez le stockage connecté au réseau
Pression mémoire et latence
La RAM est la ressource la plus critique pour la latence. Si l'ensemble de travail dépasse la RAM disponible, l'éviction du cache du système d'exploitation provoque une dégradation sévère et soutenue de la latence.
- Augmentez verticalement la RAM en premier. Critique si l'ensemble de travail >80%.
- Utilisez la quantification : scalaire (réduction 4x) ou binaire (réduction 16x) Quantification
- Déplacez les index de charge utile sur le disque si le filtrage est peu fréquent Index de charge utile sur disque
- Définissez
optimizer_cpu_budgetpour limiter les CPU d'optimisation en arrière-plan - Planifiez l'indexation : définissez un
indexing_thresholdélevé pendant les heures de pointe
Mise à l'échelle verticale pour la latence
Plus de RAM et un CPU plus rapide réduisent directement la latence. Consultez Mise à l'échelle verticale pour les directives de dimensionnement des nœuds.
Ce qu'il NE FAUT PAS faire
- N'espérez pas optimiser simultanément la latence et le débit sur le même nœud
- N'utilisez pas quelques grands segments pour les charges de travail sensibles à la latence (chaque segment prend plus de temps à rechercher)
- N'exécutez pas à >90% de RAM (l'éviction du cache provoque une dégradation sévère de la latence qui peut durer des jours)
- N'ignorez pas l'état de l'optimiseur lors du débogage des performances
- N'réduisez pas la RAM sans test de charge (l'éviction du cache provoque des incidents de latence d'une durée de plusieurs jours)