Bonjour,
Il est quasiment impossible de "deviner" ce qui peut causer un
OutOfMemory. Mais dans la version 4 de Jahia il est TRES important de
limiter la taille des caches en les configurant dans le
jahia.properties, sinon Jahia va utiliser toute la mémoire disponible.
Une récente expérience sur un projet nous a aussi permi de voir que dans
certaines charges les sessions pouvaient aussi consommer de la mémoire
qui n'est pas libérée suffisemment vite.
Nous recommendons d'installer différent outils de monitoring afin de
pouvoir tracer l'utilisation mémoire, afin de pouvoir surveilller et/ou
diagnostiquer les problèmes mémoires. Je vous oriente donc vers mon
article dans mon blog ici :
https://www.jahia.net/jahia/Jahia/op/edit/cache/offonce/pid/710?entryId=3301
. Certains de ces outils sont spécifiques à la version 5 SP 1 de Jahia
(comme par exemple l'utilisation de la JDK 6), mais d'autres peuvent
être utilisés avec Jahia 4 (comme YourKit, LambdaProbe ou MessAdmin).
Evidemment la limitation des JVM 32bit à 2GB est un autre problème, et
c'est pourquoi pour de grosses installations nous recommandons aussi des
machines virtuelles 64bit.
Salutations,
Serge Huber.
HENRY Pierre wrote:
Bonjour,
Merci pour vos réponses, désolé pour le retard (période de fêtes oblige).
Je suis rassuré de voir que nous ne sommes pas les seuls à avoir ce genre de
problèmes.
Après installation sur un nouveau serveur 64 bits avec 4 GB de RAM, et quelques
essais avec Jmeter, je confirme que cette config sera la solution à court terme
que nous allons adopter (Red hat 4 + Jrockit 1.5 + 3 GB pour la heap (Xmx)).
Pour ce qui est de limiter l'accès aux robots, ce n'est pas vraiment
envisageable, ne serait-ce que parce que nous utilisons google search comme
méthode de recherche standard sur notre site (ce qui englobe également quelques
serveurs non jahia). De plus les utilisateurs nous demandent déjà d'améliorer
le référencement dans les moteurs de recherche !
En ce qui concerne ce mécanisme de flush automatique des caches, serait-il
possible d'en dire plus ? Mon prédécesseur qui a mis en place Jahia ici m'avait
déconseillé de toucher aux purges de caches de Jahia, je n'ai donc pas trop
cherché de ce côté.
Meilleures salutations,
Pierre Henry
Ingénieur de développement
----------------------------------------------------------------------------
Université de Neuchâtel
Faculté des sciences
SITEL
-----Message d'origine-----
De : Fabrice Marchon [mailto:[EMAIL PROTECTED]
Envoyé : jeudi, 21. décembre 2006 08:26
À : [email protected]
Objet : RE: Problème de mémoire, consommation du cache de Jahia
Hello!
Je confirme les mêmes symptômes et tendances de Jahia (et les soucis de mémoire
qui en découlent) sur notre configuration qui est la suivante:
- Jahia 4.1.1_01
- Red Hat 3 AS
- Serveur quadri-xeon
- 16 Go RAM
- IBM jdk 1.4.2 avec 2,3 Go
- MySQL 4.1.20
- 180 sites et 12000 pages publiées
Actuellement, notre serveur tient 3 à 4 jours avant de provoquer un
OutOfMemory, mais seulement grâce à une mécanique de flush automatique de
certains (ou tous) caches de Jahia.
Par contre, le saut vers un serveur 64 bits et une jvm 1.5 nous semble
également le meilleure moyen à court terme face au problème mémoire.
Meilleures salutations.
Fabrice Marchon
Université de Lausanne
Centre informatique
-----Message d'origine-----
De : HENRY Pierre [mailto:[EMAIL PROTECTED] Envoyé : mercredi,
20. décembre 2006 17:47 À : [email protected] Objet : Problème de
mémoire, consommation du cache de Jahia
Nous avons Jahia 4.1.0, sur une machine Red Hat 3 bi-xeon avec 2 Go de
RAM, avec une machine virtuelle JRockit 1.4.1.
La taille de la Heap est réglée à 1024MB. Nous utilisons la console
JRockit pour surveiller l'état de la VM. Le serveur est arrêté chaque
nuit, le temps de faire un backup de la base et du système de fichiers
de Jahia.
Pour de nombreuses raison techniques et fonctionnelles, nous avons
divisé notre site web en un nombre important de sites virtuels
(environ 150 actuellement). Le nombre total de pages sur le serveur
est de l'ordre de 10'000.
Régulièrement et de plus en plus fréquemment (car le nombre de pages
publiées augmente !), nous avons des situations où le garbage
collector de la machine virtuelle n'arrive plus à libérer suffisament
de mémoire. La proportion du CPU utilisée par ce dernier monte alors
jusqu'à 80-80% ( !) et les performances chutent désastreusement, les
temps de réponse explosent et des erreurs apparaissent sur certaines
pages (mais pas toujours des OutOfMemoryException). Ce problème
devient critique car sa fréquence augmente de plus en plus.
Il semble que ces plantages soient liés à des visites de spiders de
moteurs de recherche type Google ou autre, qui contrairement au trafic
moyen ne se concentrent pas sur certaines pages mais explorent
l'entièreté des pages du site (des sites virtuels), forçant le calcul
et la mise en cache de toutes les pages, et remplissant le cache, qui
ne semble pas être doté de purge automatique. Le graphe de
l'utilisation de la heap de Java est à ce sujet très symptomatique :
la mémoire se remplit et se vide au fur et à mesure des passages du
GC, mais la quantité libérée diminue petit à petit et régulièrement.
Au démarrage de Jahia elle se monte à environ 50% du total de la heap,
et diminue jusqu'à presque rien.
Ce problème est-il connu, et bien du à la gestion du (des)
cache(s) de Jahia ? Est-il résolu dans une version ultérieure (Jahia
5) ? Quelles autres solutions sont conseillées ?
Comme une migration à la version 5n'est de toute façons pas envisagée
dans l'immédiat, j'envisage à court terme de passer à un serveur 64
bits, ainsi qu'un OS (Red hat 4) et une machine virtuelle (Jrockit
1.5) 64 bits afin d'éviter la limitation d'allocation de mémoire des
systèmes 32 bits, et de pouvoir allouer une heap de plusieurs GB. A
moyen et long terme une solution en cluster s'imposera probablement.
Comment puis-je dimensionner la taille de mémoire suffisante pour
mettre toutes les pages en cache ? Existe-t-il une estimation de la
mémoire consommée en cache par 1 page ?
Tout conseil est bienvenu !
Désolé pour le post un peu indigeste ;) j'ai essayé de concentrer au
maximum les données du problème.
Cordialement,
Pierre Henry
Ingénieur de développement
--------------------------------------------------------------
--------------
Université de Neuchâtel
Faculté des sciences
SITEL