Raison OOM #1 – Demande d'un grand nombre de lignes
Problème de mémoire insuffisante :
Les requêtes demandant un grand nombre de lignes peuvent faire manquer de mémoire au système.
Lors de l'analyse des problèmes de performances dans les déploiements clients, nous constatons souvent que les requêtes demandent plus d'un million de lignes ! Bien que Solr ne renvoie pas nécessairement autant de documents, il alloue en interne de la mémoire pour le nombre de résultats demandés par la requête.
Solution de mémoire insuffisante :
Vous devez configurer votre application pour qu'elle ne demande que le nombre de lignes affichées dans les résultats de recherche. Même avec le facettage, une demande portant sur seulement 10 ou 20 lignes calculera les facettes sur l'ensemble des résultats.
Raison OOM #2 – Requêtes commençant par un grand numéro de page
Problème de mémoire insuffisante :
Les requêtes commençant par un grand nombre de pages utilisent des quantités de mémoire inattendues. Un problème de performance similaire se produit lorsque les requêtes effectuent une pagination profonde en utilisant un grand nombre de pages. commencer paramètre. Solr doit récupérer tous les résultats jusqu'à la valeur du commencer paramètre, ce qui entraîne une utilisation importante de la mémoire.
Solution de mémoire insuffisante :
Si votre application ne peut pas être restructurée pour éviter une pagination trop poussée, vous pouvez utiliser des « Curseurs » pour obtenir des résultats plus volumineux. Pour en savoir plus, consultez la page Documentation sur la pagination Solr.
OOM Reason #3 – Requêtes de facettage, de tri et de regroupement
Problème de mémoire insuffisante :
Les requêtes de facettage, de tri et de regroupement utilisent beaucoup de mémoire, surtout si elles sont effectuées sur des champs qui ne sont pas docValuesEn général, les requêtes de facettage, de tri et de regroupement sont coûteuses et nécessitent une utilisation élevée de la mémoire. docValues=true dans la définition du champ de schéma, les exigences du tas Java sont réduites en mappant les données du champ en mémoire.
Solution de mémoire insuffisante :
Si vous rencontrez des problèmes de mémoire insuffisante, vous devez examiner les champs utilisés pour le facettage, le regroupement et le tri, et vous assurer que leur schéma définit docValues=true.
(Remarque : si vous modifiez un docValues (paramètre dans le schéma, vous devrez réindexer votre contenu.)
Raison #4 – Caches volumineux – QueryResultCache, DocumentCache, FilterCache, FieldCache
Problème de mémoire insuffisante :
La mise en cache rend Solr rapide et fiable en échangeant vitesse et mémoire. Des caches volumineux peuvent être l'une des causes de vos problèmes de mémoire insuffisante.
Il existe différents types de caches configurés dans solrconfig.xml :
- filtreCache: Il s'agit du cache stockant des listes non ordonnées d'identifiants de documents qui ont été renvoyés par le «fq" (filterQuery) paramètre de vos requêtes.
- queryResultCache : Ce cache stocke les identifiants de documents renvoyés par les recherches
- documentCache: Cela met en cache les valeurs de champ qui ont été définies comme « stockées » dans le schéma, de sorte que Solr n'a pas besoin de revenir à l'index pour les récupérer et les renvoyer pour affichage.
- fieldCache: Ce cache permet de stocker toutes les valeurs d'un champ en mémoire plutôt que sur le disque. Pour un index volumineux, fieldCache peut occuper beaucoup de mémoire, surtout si vous mettez en cache de nombreux champs.
Les paramètres de chaque cache définissent sa taille initiale, sa taille maximale et sa comptage automatique de la chaleur – qui correspond au nombre d’éléments copiés d’un ancien moteur de recherche vers le nouveau.
Solution de mémoire insuffisante :
En consultant les plugins et les statistiques du tableau de bord Solr, vous pouvez vérifier le taux de réussite des caches pour voir s'ils sont utilisés. Si le taux de réussite est trop faible, les caches ne sont pas réellement utilisés. Vous pouvez réduire la taille des caches pour réduire l'empreinte mémoire.
De plus, si le nombre d'évictions est trop important, il est probable que les entrées en cache soient supprimées sans être utilisées. Il serait peut-être judicieux de réduire la taille du cache pour éviter les problèmes de mémoire insuffisante.
Notez également que ces caches sont gérés par cœur/collection. Les besoins en mémoire seront multipliés par le nombre de collections. Si votre application utilise un grand nombre de collections, l'impact mémoire de la mise en cache sera amplifié.
Comment ajouter plus de mémoire au déploiement Solr
Si vous utilisez SearchStax Cloud pour héberger vos déploiements Solr et avez besoin de plus de mémoire, découvrez comment vous pouvez mettre à niveau votre déploiement SearchStax.
Faites confiance à SearchStax pour gérer votre Solr pour vous
Confiez-nous la gestion des aspects techniques de votre infrastructure Solr. Vous n'êtes pas seul pour mettre en œuvre ces bonnes pratiques. Discutez avec l'un de nos experts Solr pour découvrir comment nous pouvons vous simplifier la tâche.
Recherche gérée SearchStax est une solution SaaS entièrement gérée qui automatise, gère, maintient et fait évoluer l'infrastructure de recherche Solr dans des clouds publics ou privés. Nous prenons en charge Solr et veillons à ce que vous disposiez d'une configuration fiable, sécurisée et conforme, afin que vous puissiez vous concentrer sur des tâches à plus forte valeur ajoutée.
Planifier une démo ou démarrer un essai gratuit pour voir comment SearchStax Managed Search peut vous simplifier la vie.