23
JBoss Clustering & Tuning Lab Technique N°3/3 Fourat Z. Senior software architect fourat.zouari@tritux.com

JBoss clustering et tuning (lab 3/3)

Embed Size (px)

DESCRIPTION

- Introduction à la mesure de performance- Stress Test avant tuning a. Cas de test b. Dimensionnement (serveur) c. Résultats- Optimisation de JBoss EAP 5.1 a. Supprimer le non utilisé par votre application b. Configuration de log4j c. Configuration de la mémoire JVM d. Configuration de la data sourcee.- Configuration de la connexion HTTP - Stress Test après tuning

Citation preview

Page 1: JBoss clustering et tuning (lab 3/3)

JBoss Clustering & Tuning

Lab Technique N°3/3Fourat Z.

Senior software [email protected]

Page 2: JBoss clustering et tuning (lab 3/3)

2

Qui sommes nous?

TRITUX S.A.R.L. est une SSII Tunisienne, créée en 2006

• Une équipe jeune (30 ingénieurs) orientée nouvelles technologies

• Prestations de pointe en Administration système Linux, clustering et haute disponibilité, solutions VAS (telecom), mobile banking, SMS et SOA.(c.f. http://tritux.com/services )

• Editeur de plusieurs logiciels dans divers domaines I.T.(c.f. http://tritux.com/products )

• Mise en place d’architectures « enterprise », ex: Clusters, Firmes de données, SOA (ESB), EAI

Page 3: JBoss clustering et tuning (lab 3/3)

s

3

Plan

1. Introduction à la mesure de performance2. Stress Test avant tuning

a. Cas de testb. Dimensionnement (serveur)c. Résultats

3. Optimisation de JBoss EAP 5.1a. Supprimer le non utilisé par votre applicationb. Configuration de log4jc. Configuration de la mémoire JVMd. Configuration de la data sourcee. Configuration de la connexion HTTP

4. Stress Test après tuning

5. Conclusion

Page 4: JBoss clustering et tuning (lab 3/3)

s

4

1.Introduction à la mesure de performanceLes stress test ou test de monté de charge consiste à simuler un

grand nombre d’utilisateurs qui exploitent simultanément votre

application.

Notre but via ce test et d’étudier si votre application qui est supposé

déployé sur le serveur JBoss EAP 5.1 répondait réellement à vos besoins

(nombres d’utilisateurs supporté, ressources matérielles, consommation

bande passante…). Pour ce la on dispose d’un très bon outil de mesures de

performances et stress test appelée Jakarta Jmeter disponible sous le

répertoire outillage du CD de formation.

Page 5: JBoss clustering et tuning (lab 3/3)

s

5

2. Stress Test avant tuning

Présentation

Pour les performances on cherche:

Coté client : Minimiser le maximum le temps de réponse.

temps de réponse: c’est le temps écoulé pendant que l’utilisateur

clique sur un bouton et la page (résultat) sera affichée par le navigateur.

Coté serveur: Maximisé le maximum débit (Throughput).

Le débit: (Throughput): C’est le nombre de transactions qui peuvent

se produire dans un laps de temps donnée, il est normalement mesuré

en transactions par seconde (tps).

Page 6: JBoss clustering et tuning (lab 3/3)

s

6

2. Stress Test avant tuning

a. Cas de test

Notre objectif est de simuler une masse d’utilisateurs qui

appellent le point d’entré de notre l’application helloworld à l’adresse « 

http://<adresse-ip>:8080/helloworld/home.seam »

En accédant à cette adresse le client (browser) envoie au serveur JBoss

une requête HTTP GET.

Cas de test:

- 1er Cas: 1 utilisateur qui fera 100 invocations consécutives.

- 2ème Cas: 5 utilisateurs qui feront au même instant 100 invocations

consécutives,.

- 3ème Cas: 25 utilisateurs qui feront au même instant 100 invocations

consécutives.

Page 7: JBoss clustering et tuning (lab 3/3)

s

7

2. Stress Test avant tuning

b. Dimensionnement (serveur)

CPU: Intel(R) Core (TM)2 Duo CPU - 2.00GHz (32 Bits)

Mémoire Physique: 3 Go

Mémoire virtuelle (SWAP): 2 Go

Carte réseau: Fast Ethernet 10/100 Mb/s

Système d’exploitation: Red Hat Enterprise Linux Server release 5.4

version du kernel: 2.6.18-164.el5

Page 8: JBoss clustering et tuning (lab 3/3)

s

8

2. Stress Test avant tuningc. Résultats:

Temps de démarrage du serveur : 50 secondes

1er Cas :- Débit (Throughput): 10 Tps- Echec: 0%- Attente Moyenne: 98 ms

2ème Cas :- Débit (Throughput): 18 Tps- Echec: 0%- Attente Moyenne: 260ms

2ème Cas :- Débit (Throughput): 19Tps- Echec: 0%- Attente Moyenne: 1260 ms

Page 9: JBoss clustering et tuning (lab 3/3)

s

9

3. Optimisation de JBoss EAP 5.1

Par défaut JBoss EAP plusieurs bibliothèques, composants et

paramétrages qui sont dans la majorité du temps non exploités par votre

application. Ces derniers consomment énormément de ressources

(Mémoire, CPU, Espace disque..) ce qui affecte la performance de votre

application.

Donc penser à éliminer toutes composantes ou paramètres

non utilisés par votre application tout en se référent à ce qui suit.

a. Supprimer le non utilisé par votre application:

Page 10: JBoss clustering et tuning (lab 3/3)

s

10

3. Optimisation de JBoss EAP 5.1 Si votre application n’utilise pas les services EJB2/3 supprimer :

- deploy/ejb3-connectors-jboss-beans.xml - deploy/ejb3-container-jboss-beans.xml - deploy/ejb3-interceptors-aop.xml- deploy/ejb3-timerservice-jboss-beans.xml- deploy/ejb2-container-jboss-beans.xml- deploy/ejb2-timer-service.xml- deployers/jboss-ejb3-endpoint-deployer.jar- deployers/ejb3-deployers-jboss-beans.xml

Si votre application n’utilise pas JUDDI supprimer :

- deploy/juddi-service.sar

Si votre application n’utilise pas le générateur de clé UUID supprimer:

- deploy/ uuid-key-generator.sar

Page 11: JBoss clustering et tuning (lab 3/3)

s

11

3. Optimisation de JBoss EAP 5.1 Si votre application n’utilise pas JMS (Java Message Service),

Supprimer:

- conf/props/messaging-roles.properties- conf/props/messaging-users.properties- deploy/messaging- deploy/jms-ra.rar- deploy/quartz-ra.rar- deployers/ messaging-definitions-jboss-beans.xml

Editer:

- conf/jbossts-properties.xml

commenter ou supprimer:

<property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1" value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/

DefaultJMSProvider"/> </properties>

Page 12: JBoss clustering et tuning (lab 3/3)

s

12

3. Optimisation de JBoss EAP 5.1 Si votre application n’utilise pas JBoss Mail, supprimer:

- deploy/mail-service.xml- deploy/mail-ra.rar

Si votre application n’utilise pas JBoss Scheduling, supprimer:

- deploy/schedule-manager-service.xml- deploy/scheduler-service.xml

Si votre application n’utilise pas Hypersonic DB, supprimer:

- deploy/hsqldb-ds.xml

Suppression de Bsh Deployer:

- deployers/bsh.deployer

Désactivation de déploiement à chaud (Hot deployment)

Supprimer: deploy/hdscanner-jboss-beans.xml

Page 13: JBoss clustering et tuning (lab 3/3)

s

13

3. Optimisation de JBoss EAP 5.1 Si votre application n’utilise pas JBossWS (JBoss Web service), supprimer:

- conf/jax-ws-catalog.xml- conf/props/jbossws-roles.properties- conf/props/jbossws-users.properties- depolyers/jbossws.deployer

Si votre application n’est développée sur le Framework JBoss Seam, supprimer:

- deployers/seam.deployer- deployers/webbeans.deployer- deployer/admin-console.war

Si vous n’aurez pas besoin de la console d’administration vous pouvez la supprimer car elle consomme trop de ressources. Supprimer:

- deployer/admin-console.war

Page 14: JBoss clustering et tuning (lab 3/3)

s

14

3. Optimisation de JBoss EAP 5.1 Si votre application n’utilise pas les services IIOP/Corba,

Supprimer:

- deploy/jacorb.properties- deploy/ iiop-service.xml- deployers/ejb3.deployer/META-INF/ ejb3-iiop-deployers-jboss-beans.xml- lib/jacorb.jar

Editer: conf/jndi.properties

remplacer cette ligne : java.naming.factory.initial=org.jboss.iiop.naming.ORBInitialContextFactory par cette ligne : java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory

Page 15: JBoss clustering et tuning (lab 3/3)

s

15

3. Optimisation de JBoss EAP 5.1 Suppression d’autres services (Attention: les dépendances avec

votre application est à vérifier) :

- deployers/deploy/jboss-xa-jdbc.rar- deploy/xnio-provider.jar

Désactivation du Clustring si vous n’aurez pas besoin, Supprimer:

- ./deploy-hasingleton- ./farm- deploy/cluster

Editer : conf/bootstrap/profile.xml

Supprimer ou commenter ça:

<property name="farmURIs"> <list elementClass="java.net.URI"> <value>${jboss.server.home.url}farm</value> </list> </property>

Page 16: JBoss clustering et tuning (lab 3/3)

s

16

3. Optimisation de JBoss EAP 5.1 Suppression d’autres services (Attention: les dépendances avec

votre application est à vérifier) :

- deployers/deploy/jboss-xa-jdbc.rar- deploy/xnio-provider.jar

Désactivation du Clustring si vous n’aurez pas besoin, Supprimer:

- ./deploy-hasingleton- ./farm- deploy/cluster

Editer : conf/bootstrap/profile.xml

Supprimer ou commenter ça:

<property name="farmURIs"> <list elementClass="java.net.URI"> <value>${jboss.server.home.url}farm</value> </list> </property>

Page 17: JBoss clustering et tuning (lab 3/3)

s

17

3. Optimisation de JBoss EAP 5.1b. Configuration de log4j

La configuration par défaut du log est déconseillée en mode production, nous voulons seulement que les erreurs soient loggées.

Éditer le fichier conf/jboss-log4j.xml puis remplacer tout le contenu du root (<root> ………….. </root>).

par ça :

<root> <priority value="ERROR"/> <appender-ref ref="FILE"/> </root>

Page 18: JBoss clustering et tuning (lab 3/3)

s

18

3. Optimisation de JBoss EAP 5.1c. Configuration de la mémoire JVM:

Éditer la variable $JAVA_OPTS dans le fichier bin/run.conf

-Xms<size> : taille (en Mo) minimum de la mémoire alloué: min-heap-Xmx<size> : taille (en Mo) maximum de la mémoire alloué: max-heap

Xms et Xmx doivent avoir la même valeur en production pour notre configuration.Le choix de cette valeur n’est pas au hasard, il faut qu’il soit bien étudier selon le nombre d’applications déployées, ressources utilisées etc…

-XX:MaxPermSize : Il est recommander que cette valeur soit le 1/4 de max-heap.

Page 19: JBoss clustering et tuning (lab 3/3)

s

19

3. Optimisation de JBoss EAP 5.1d. Configuration de la data source:

Editer le fichier data source xxxxx-ds.xml accompagné avec l’archive de votre application (war), La modification de ces deux paramètres peuvent optimiser la connexion avec la base:

- min-pool-size: C’est le nombre initial de connexions à la BD qui peuvent être gardées.- max-pool-size: C’est le nombre maximale de connexions concurrentes à la BD. Cette valeur doit être répondre aux besoins de votre application et respecte le paramétrage de votre SGBD

Page 20: JBoss clustering et tuning (lab 3/3)

s

20

3. Optimisation de JBoss EAP 5.1e. Configuration de la connexion HTTP:

Éditer le fichier deploy/jbossweb.sar/server.xml, les paramètres les plus importants sont :

- maxThreads : Il s’agit du nombre maximum de threads (nombre d’utilisateur qui peuvent exploiter en parallèle votre application).- acceptCount : si le nombre d’utilisateurs concurrents dépassent le nombre maximum autorisé maxThreads, l’attribut acceptCount représente la taille d’une file d’attente permettant de tenir j’usqu’au nombre acceptCount de threads en attente pour traitement. - compression : Si cet attribut reçoit la valeur « force », la réponse HTTP sera compressé par JBoss puis renvoyée au browser. (ça peu réduire la bande passante).

Exemple:

<Connector protocol="HTTP/1.1" port="8080" address="${jboss.bind.address}"

connectionTimeout="20000" redirectPort="8443" maxThreads="50" acceptCount="100" compression="force" />

Page 21: JBoss clustering et tuning (lab 3/3)

s

21

4. Stress Test après tuningRésultat (avec les mêmes conditions précédentes)

Temps de démarrage du serveur : 39 secondes

1er Cas :- Débit (Throughput): 12 Tps vs. 10 Tps- Echec: 0%- Attente Moyenne: 81 ms vs 98 ms

2ème Cas :- Débit (Throughput): 22 Tps vs 18 Tps- Echec: 0%- Attente Moyenne: 230ms vs 260 ms

3ème Cas :- Débit (Throughput): 22Tps vs 19 Tps- Echec: 0%- Attente Moyenne: 1109 ms vs 1260 Tps

Page 22: JBoss clustering et tuning (lab 3/3)

s

22

5. ConclusionOn remarque que l’optimisation de JBoss EAP 5.1 à jouer son rôle

pour augmenter les performances et même si qu’on a pu atteindre que 10%

à 12% de d’efficacité avec une simple application et un environnement

minime, avec d’autres environnement plus puissants et des applications plus

complexes le gain de performances peut aller jusqu’à 30% !

Une bonne pratique de test de performances est que vous devriez

toujours essayer de faire différents cas de tests ainsi que plusieurs

régalages puis comparer les résultats obtenus et choisissez la plus adéquate

à vos besoins !

Page 23: JBoss clustering et tuning (lab 3/3)

[email protected] Rue du Niger, Mont Plaisir / TunisCentre Hanene, 4é étage

more …http://tritux.com/products/http://tritux.com/services/http://tritux.com/blog/1