IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Optimiser JBoss en enlevant les services inutiles?


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut Optimiser JBoss en enlevant les services inutiles?
    Bonjour

    Je développe un projet qui utilise les technologies suivantes : Hibernate, Spring, JSF, Richfaces, avec Eclipse comme IDE et JBoss comme serveur d'application.


    Jusqu'à présent j'utilisais le JBoss par défaut, mais je commence à le trouver un peu lourd. Il met quasiment trois minutes à démarrer, et il démarre tout un tas de services inutiles. Par exemple, je n'utilise pas d'EJB. Spring me dispense d'utiliser JNDI. Je n'utilise pas d'annotations J2EE (j'utilise des fichiers de configuration .hbm.xml pour hibernate). Je n'utilise pas JMX, je n'utilise pas la console web de JBoss, je ne me soucie pas particulièrement de la sécurité (projet destiné à un intranet). Mais JBoss me prend 500MO de mémoire vive au démarrage et ça peut monter jusqu'à 1.2GO (sur 2GO disponibles en tout) dans la journée, sachant qu'Eclipse prend lui même 400 MO au démarrage et jusqu'à 700 MO par la suite, mon ordinateur a du mal à tenir la charge.



    En conséquence, je me demande s'il ne serait pas possible d'alléger JBoss de tous ces services inutiles histoire d'économiser de la mémoire vive et de le rendre plus rapide?
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    dans jboss, tu as plusieurs configuration. La default contient les bases de J2EE, avec une conteneur EJB. La full itègre webservice et tout le toutim. Le minimal contient le minimum pour charger jboss (tu devrais peut être y ajouter les composant comme le service tomcat si tu en as besoin).

    PS: si tu ne fait que des pages web, vise plutot un tomcat en développement!

    Chez moi un JBOSS en config défaut démarre en une 15aine de secondes, donc si tu prend 3m, il y a fort à parier que 2m30 de ces trois minutes sont de toutes façons prises par ton application.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    En fait je ne fais que des pages Web, mais je me connecte tout de même à la base de données, et je ne sais pas si Jboss intervient sur les accès en base ou si Spring suffit à cette tache.

    De plus, comme j'utilise Richfaces et Hibernate qui sont deux technos JBoss, ça me paraissait logique d'utiliser JBOss comme serveur d'application. Mais rien n'est encore définitif, et je n'écarte pas le fait de passer à Tomcat ou Jetty s'il s'avère qu'ils peuvent suffire à la tache et être plus performants.

    Par exemple j'apprécie la manière dont JBOss gère admirablement bien le déploiement à chaud et possède déjà la quasi totalité des librairies dont le projet à besoin, et j'ai peur en allant sous Tomcat ou Jetty que ça ne se passe pas aussi bien, et de devoir partir à la chasse aux librairies et aux bugs de version
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    +1 pour Tchize : tu peux passer sous Tomcat ou Jetty, au moins en développement. Pour la prod, tu pourras te reposer la question plus tard.

    Si tu restes sous JBoss 5, tu peux peut-être utiliser le profil Web. Selon le planning de ton projet, tu peux envisager de passer sous JBoss 6 dont les temps de démarrage ont été améliorés.

    Ceci dit, je ne suis pas certain que ça t'avance à grand chose. Un JBoss met environs 1 min à démarrer sur un PC correct. Les 2 minutes supplémentaires sont donc probablement dus aux initialisations de ton application. Idem pour la conso mémoire.
    Une petit astuce tout de même pour améliorer le temps de démarrage, il faut parfois augmenter la valeur du Xms. Pour le savoir, utilise jconsole et observe la valeur de la mémoire heap committed après le démarrage puis fixe ton Xms à une valeur au moins égale.

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par hasalex Voir le message
    Si tu restes sous JBoss 5, tu peux peut-être utiliser le profil Web. Selon le planning de ton projet, tu peux envisager de passer sous JBoss 6 dont les temps de démarrage ont été améliorés.
    J'espère que c'est mieux que la RC que j'avais essayé il y a quelques mois. Il chargeais en mémoire TOUS mes jar, et, au bout de 25 minutes de démarrage de l'appli se terminais sur une erreur de type HEAP (tu m'étonne à vouloir charger 150M de jars en mémoire )

  6. #6
    Membre éprouvé

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Points : 900
    Points
    900
    Par défaut
    En fait, sous JBoss, mon appli met 40sec pour démarrer, et donc JBoss met 2min20s (d'après le log). Mais j'ai suivi votre conseil, je suis passé sous Tomcat 6 pour le développement, et l'amélioration est significative.

    J'ai juste du ajouter dans les lib de tomcat quelques librairies comme hibernate3, sl4j, jsf, jstl, jta, commons-logging, pour que l'application puisse tourner, et l'ensemble démarre en moins de 15 secondes pour une consommation de RAM de 86MO stable en durée.

    Merci de vos conseils!
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enlever les 0 inutiles
    Par Chacha35 dans le forum Développement
    Réponses: 3
    Dernier message: 02/12/2009, 18h55
  2. [MySQL] Chiffre décimal, enlever les zéros inutiles
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 03/07/2007, 02h46
  3. Comment enlever les zeros inutiles d'un float
    Par Skorpyon69 dans le forum C
    Réponses: 18
    Dernier message: 04/12/2006, 21h08
  4. Enlever les services inutiles ?
    Par Michaël dans le forum Sécurité
    Réponses: 6
    Dernier message: 25/10/2005, 16h12
  5. Enlever les espaces inutiles d'un AnsiString
    Par jamesb dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/01/2005, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo