Developpez.com - Solutions d'entreprise
X

Choisissez d'abord la catégorieensuite la rubrique :


Optimisation des performances d'un serveur Liferay:
quelques pratiques issues de retour d'expérience.

Publié le 16 juillet 2012

Par B. Jc. BAKENEGHE et Xavier FANON

 (Koossery Technology)

 

Nous présentons ici un retour d'expérience sur quelques bonnes pratiques de configurations pour optimiser les performances d'un serveur Liferay.
Nous présenterons les optimisations au niveau système puis au niveau du web-tiers.

       Version PDF   Version hors-ligne   Version eBooks
Viadeo Twitter Facebook Share on Google+        



I. Optimisation des configurations systèmes
I-1. JVM
I-1-1. La mémoire de la pile
I-1-2. Le garbage collector
II. Optimisation des configurations au niveau du web-tiers
II-1. Les filtres
II-2. javascripts
II-3. Thèmes, CSS, Look and Feel
II-4. Template Velocity
II-5. Index lucene


I. Optimisation des configurations systèmes



I-1. JVM



I-1-1. La mémoire de la pile

Un swap disque élevé ou un garbage collector qui intervient trop souvent impactent négativement les performances du serveur Liferay. Il faut donc configurer de façon optimale la mémoire.
La configuration de la mémoire se fait au travers des paramètres de la JVM.
Au fur et à mesure que les objets sont créés, ils sont stockés dans une pile qu'on peut configurer au travers des paramètres suivants :

Pour un serveur Liferay, il est conseillé de configurer une taille fixe pour la pile et donc d'avoir les mêmes valeurs pour Xms et Xmx.
Il existe un dernier paramètre qui indique la quantité de mémoire qu'on souhaite allouer pour le chargement des classes. Il s'agit du paramètre PermGen. On le configure au travers de :

Si on part de l'hypothèse qu'on a un serveur (2 core cpu avec 2Go de RAM) dédié pour Liferay, la configuration ci-dessous est mieux adaptée pour le serveur Liferay :

-Xms2048m -Xmx2048m -XX:MaxPermSize=256m

Dans les systèmes 64bits, il est possible pour notre serveur Liferay de disposer de largement plus de 2 Go de mémoire.
Dans ce cas, il peut être tentant de configurer Xms et Xmx avec une valeur supérieure à 2048m. Une telle configuration serait pénalisante car une valeur trop grande pour notre pile ferait que le garbage collector mettrait beaucoup plus de temps pour le nettoyage de la pile. Lorsqu'on est dans cette situation, il est préférable de mettre en place de multiples JVM avec chacune une instance Liferay.


I-1-2. Le garbage collector

Le rôle du garbage collector est d'aller nettoyer la pile en la vidant de tous les objets qui ne sont plus référencés.
Lors du passage du garbage collector, tous les processus en cours dans la pile sont stoppés jusqu'à ce que le nettoyage soit terminé. Il en résulte donc un ralentissement du système à chaque passage du garbage collector.
Afin de limiter l'impact du passage du garbage collector, on peut finement configurer certains paramètres de la JVM :

Si on part de l'hypothèse qu'on a un serveur (2 core cpu avec 2Go de RAM) dédié pour Liferay, la configuration ci-dessous est mieux adaptée pour le serveur Liferay :

JAVA_OPTS="$JAVA_OPTS -XX:NewSize=700m -XX:MaxNewSize=700m -Xms2048m -Xmx2048m -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=20 -XX:ParallelGCThreads=2"


II. Optimisation des configurations au niveau du web-tiers

Pour un portail Liferay à fort trafic, il peut être précieux d'activer certains filtres, notamment ceux en rapport avec le cache au niveau web-tiers.
Il faut activer les filtres suivants :

Il faut désactiver les filtres suivants car ils ralentissent les performances du serveur Liferay :

Plus généralement, il faut désactiver les filtres suivants s'ils ne sont pas mis en oeuvre dans le serveur Liferay :


II-1. Les filtres



II-2. javascripts



II-3. Thèmes, CSS, Look and Feel



II-4. Template Velocity

Afin d'effectuer un cache des template Velocity, il faut mettre la configuration suivante :
'velocity.engine.resource.manager.cache.enabled'=true.


II-5. Index lucene

Afin d'éviter un indexage à chaque redémarrage du serveur, il faut positionner :
'index.on.startup'=false.

Tous nos remerciements au comité de rélecture de developpez.com

     Koossery Technology
Java EE- .NET- Alfresco- Liferay




               Version PDF   Version hors-ligne   Version eBooks

Valid XHTML 1.0 TransitionalValid CSS!

Contacter le responsable de la rubrique Solutions d'entreprise