Configuration de la mémoire
Vue d’ensemble
Pour les applications Java, il est nécessaire de configurer la mémoire heap maximale utilisée par chaque processus. Dans Fess, les paramètres de mémoire sont configurés pour les trois composants suivants.
Application web Fess
Processus de crawl
Opensearch
Une configuration mémoire appropriée permet d’améliorer les performances et d’assurer un fonctionnement stable.
Configuration de la mémoire de l’application web Fess
Quand configurer
Envisagez d’ajuster la taille de la mémoire dans les cas suivants.
Les erreurs OutOfMemory sont enregistrées dans
fess.logVous devez traiter un grand nombre d’accès simultanés
Les opérations de l’interface d’administration sont lentes ou expirent
La taille de mémoire par défaut est suffisante pour une utilisation générale, mais une augmentation est nécessaire dans les environnements à forte charge.
Configuration par variable d’environnement
Définissez la variable d’environnement FEss_HEAP_sIZE.
export FEss_HEAP_sIZE=2g
Unités :
m: mégaoctetsg: gigaoctets
Pour les packages RPM/DEB
si vous avez installé avec le package RPM, éditez /etc/sysconfig/fess.
FEss_HEAP_sIZE=2g
Pour le package DEB, éditez /etc/default/fess.
FEss_HEAP_sIZE=2g
Avertissement
Après avoir modifié la taille de la mémoire, vous devez redémarrer le service Fess.
Tailles de mémoire recommandées
| Environnement | Taille heap recommandée | Remarques |
|---|---|---|
| Environnement de développement/test | 512m〜1g | Index de petite taille |
| Environnement de production à petite échelle | 1g〜2g | Dizaines à centaines de milliers de documents |
| Environnement de production à moyenne échelle | 2g〜4g | Centaines de milliers à millions de documents |
| Environnement de production à grande échelle | 4g〜8g | Plusieurs millions de documents et plus |
Configuration de la mémoire du crawler
Quand configurer
Vous devez augmenter la taille de mémoire du crawler dans les cas suivants.
Lorsque vous augmentez le nombre de crawls parallèles
Lors du crawl de fichiers volumineux
Lorsque des erreurs OutOfMemory se produisent pendant l’exécution du crawl
Méthode de configuration
Éditez app/WEB-INF/classes/fess_config.properties ou /etc/fess/fess_config.properties.
jvm.crawler.options=-Xmx512m
Par exemple, pour passer à 1 Go :
jvm.crawler.options=-Xmx1g
Note
Ce paramètre est appliqué par processus de crawl (par tâche du planificateur). si vous exécutez plusieurs tâches de crawl simultanément, chaque tâche utilisera la mémoire spécifiée.
Paramètres recommandés
Crawl web normal : 512m〜1g
Crawl parallèle intensif : 1g〜2g
Crawl de fichiers volumineux : 2g〜4g
Options JVM détaillées
Les options JVM détaillées pour le crawler peuvent être configurées avec jvm.crawler.options. Les paramètres par défaut incluent les optimisations suivantes.
Options principales :
| Option | Description |
|---|---|
-Xms128m -Xmx512m | Taille heap initiale et maximale |
-XX:MaxMetaspacesize=128m | Taille maximale du Metaspace |
-XX:+UseG1GC | Utilisation du collecteur de déchets G1 |
-XX:MaxGCPauseMillis=60000 | Temps d’arrêt GC cible (60 secondes) |
-XX:-HeapDumpOnOutOfMemoryError | Désactivation du dump heap lors d’OutOfMemory |
Configuration de la mémoire Opensearch
Considérations importantes
Pour Opensearch, vous devez configurer la mémoire en tenant compte des deux points suivants.
Mémoire heap Java : Utilisée par le processus Opensearch
Cache du système de fichiers Os : Important pour les performances de recherche
Avertissement
si vous augmentez trop la mémoire heap Java, la mémoire disponible pour le cache du système de fichiers Os diminue, ce qui peut dégrader les performances de recherche.
Méthode de configuration
Environnement Linux
La mémoire heap Opensearch est spécifiée via une variable d’environnement ou le fichier de configuration Opensearch.
Configuration par variable d’environnement :
export OPENsEARCH_HEAP_sIZE=2g
Ou éditez config/jvm.options :
-Xms2g
-Xmx2g
Note
Il est recommandé de définir la taille heap minimale (-Xms) et maximale (-Xmx) à la même valeur.
Environnement Windows
Éditez le fichier config\jvm.options.
-Xms2g
-Xmx2g
Tailles de mémoire recommandées
| Taille de l’index | Taille heap recommandée | Mémoire totale recommandée |
|---|---|---|
| 〜10GB | 2g | 4 Go ou plus |
| 10GB〜50GB | 4g | 8 Go ou plus |
| 50GB〜100GB | 8g | 16 Go ou plus |
| 100 Go et plus | 16g〜31g | 32 Go ou plus |
Avertissement
Ne configurez pas la mémoire heap Opensearch au-delà de 32 Go. Au-delà de 32 Go, Compressed OOP est désactivé, ce qui réduit l’efficacité de la mémoire.
Bonnes pratiques
Allouer 50% de la mémoire physique au heap
Allouez environ 50% de la mémoire physique du serveur au heap Opensearch. Le reste est utilisé pour l’Os et le cache du système de fichiers.
Maximum 31 Go
La taille heap doit être limitée à 31 Go maximum. si vous avez besoin de plus, augmentez le nombre de nœuds.
Vérification en production
Consultez la documentation officielle Opensearch pour optimiser la configuration selon votre environnement.
Configuration de la mémoire pour les processus de suggestion et de miniature
Processus de génération de suggestions
Les paramètres de mémoire pour le processus de génération de suggestions sont configurés avec jvm.suggest.options.
jvm.suggest.options=-Xmx256m
Par défaut, les paramètres suivants sont utilisés :
Heap initial : 128 Mo
Heap maximal : 256 Mo
Metaspace maximal : 128 Mo
Processus de génération de miniatures
Les paramètres de mémoire pour le processus de génération de miniatures sont configurés avec jvm.thumbnail.options.
jvm.thumbnail.options=-Xmx256m
Par défaut, les paramètres suivants sont utilisés :
Heap initial : 128 Mo
Heap maximal : 256 Mo
Metaspace maximal : 128 Mo
Note
si vous traitez de grandes images lors de la génération de miniatures, vous devrez augmenter la mémoire.
surveillance et optimisation de la mémoire
Vérification de l’utilisation de la mémoire
Utilisation de la mémoire Fess
Vous pouvez vérifier dans « Informations système » de l’interface d’administration.
Ou utilisez les outils de surveillance JVM :
jps -l # Vérifier le processus Fess
jstat -gcutil <PID> 1000 # Afficher les statistiques GC toutes les secondes
Utilisation de la mémoire Opensearch
curl -X GET "localhost:9201/_nodes/stats/jvm?pretty"
curl -X GET "localhost:9201/_cat/nodes?v&h=heap.percent,ram.percent"
signes de manque de mémoire
si les symptômes suivants apparaissent, il peut y avoir un manque de mémoire.
Application web Fess :
Réponses lentes
OutOfMemoryErrorenregistré dans les journauxArrêt inattendu du processus
Crawler :
Le crawl s’arrête en cours d’exécution
OutOfMemoryErrorenregistré dansfess_crawler.logÉchec du crawl de fichiers volumineux
Opensearch :
Recherche lente
Création d’index lente
Erreurs
circuit_breaker_exception
Procédure d’optimisation
Vérifier l’utilisation actuelle de la mémoire
surveillez l’utilisation de la mémoire de chaque composant.
Identifier les goulots d’étranglement
Identifiez quel composant manque de mémoire.
Augmenter progressivement
N’augmentez pas de manière excessive en une fois, augmentez de 25-50% et vérifiez l’effet.
Considérer l’équilibre global du système
Assurez-vous que la mémoire totale de tous les composants ne dépasse pas la mémoire physique.
surveillance continue
surveillez en continu l’utilisation de la mémoire et ajustez si nécessaire.
Prévention des fuites mémoire
En cas de suspicion de fuite mémoire :
Obtenir un dump heap
jmap -dump:format=b,file=heap.bin <PID>
Analyser le dump heap
Analysez avec des outils comme Eclipse Memory Analyzer (MAT).
signaler le problème
si vous découvrez une fuite mémoire, signalez-la sur GitHub Issues.
Dépannage
OutOfMemoryError se produit
Application web Fess :
Augmentez
FEss_HEAP_sIZE.Limitez le nombre d’accès simultanés.
Réduisez le niveau de journalisation pour diminuer l’utilisation de la mémoire par les journaux.
Crawler :
Augmentez
-Xmxdansjvm.crawler.options.Réduisez le nombre de crawls parallèles.
Ajustez la configuration du crawl pour exclure les fichiers volumineux.
Opensearch :
Augmentez la taille heap (jusqu’à 31 Go maximum).
Revoyez le nombre de shards de l’index.
Vérifiez la complexité des requêtes.
Temps d’arrêt GC prolongé
Ajustez les paramètres G1GC.
Configurez correctement la taille heap (un GC fréquent se produit si elle est trop grande ou trop petite).
Envisagez de mettre à jour vers une version Java plus récente.
Les performances ne s’améliorent pas après la configuration de la mémoire
Vérifiez d’autres ressources comme le CPU, les E/s disque et le réseau.
Optimisez l’index.
Revoyez les paramètres de requête et de crawl.
Informations de référence
Configuration du port et du réseau - Configuration du port et du réseau
Configuration avancée du robot d’indexation - Configuration avancée du crawler
Configuration des journaux - Configuration des journaux