Rapport de recherche sur l'état de la recherche sur site dans l'enseignement supérieur avec The Chronicle of Higher Education | Télécharger le rapport
Rapport de recherche sur l'état de la recherche sur site dans l'enseignement supérieur avec The Chronicle of Higher Education | Télécharger le rapport

Mémoire insuffisante pour Solr (OOM) : causes et solutions

solr-OOM

Le Service de recherche gérée SearchStax facilite la configuration, la gestion et la maintenance Apache Solr, une plateforme de recherche d'entreprise open source issue du projet Apache Lucene. Les applications Java rencontrent parfois des problèmes de mémoire insuffisante, un problème courant également avec les déploiements Solr.

Lorsque Solr manque de mémoire, nous nous attendons intuitivement à ce que le l'index est trop grand ou l'application est accablé par un taux d’indexation très élevé. Bien que ces problèmes soient courants, ils ne constituent peut-être pas les véritables ou les seules raisons.

Ci-dessous, nous examinons les principales raisons pour lesquelles votre déploiement Solr peut générer une exception de mémoire insuffisante et ce que vous pouvez faire pour résoudre les erreurs.

Demander un grand nombre de lignes

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. 

Requêtes commençant par un grand numéro de page 

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.

Requêtes de facettage, de tri et de regroupement

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. (Si vous changez un docValues (paramètre dans le schéma, vous devrez réindexer votre contenu.)

Grands caches – QueryResultCache, DocumentCache, FilterCache, FieldCache. 

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 :

  1. 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.
  2. queryResultCache : Ce cache stocke les identifiants de documents renvoyés par les recherches
  3. 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.
  4. 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 d'utilisation des caches pour voir s'ils sont utilisés. Si le taux 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

Si vous utilisez SearchStax Managed Search pour héberger vos déploiements Solr et avez besoin de plus de mémoire, découvrez comment vous pouvez mettez à niveau votre déploiement SearchStax.

De plus, si vous souhaitez comprendre si votre processus Solr est mort à cause d'une exception de mémoire insuffisante, Consultez l'entrée FAQ du produit SearchStax sur les erreurs de mémoire insuffisante de Solr.

Passez à une solution plus simple

Si vous vous sentez bloqué avec votre déploiement Solr actuel ou s'il ne répond plus aux besoins de votre entreprise, contactez l'un de nos experts pour voir à quel point il est facile de passer à Recherche gérée SearchStax.

À propos de l'auteur

Par Dipsy Kapoor

vice-président, ingénierie

18 février 2023

Recommandé pour vous

Recevez en premier le contenu le plus récent

fr_CAFrançais du Canada