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

Tomcat et TomEE Java Discussion :

Lenteur TOMCAT ?


Sujet :

Tomcat et TomEE Java

  1. #1
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut Lenteur TOMCAT ?
    Bonjour,
    J'ai une application utilisant JSF déployée sur TOMCAT5.5. Cette application attauqe une base de données DB2/400 pour faire des éditions (donc pas de mise à jour de la base de données). Il y a peu près 200 utilisateurs qui utilisent cette application en même temps. Le problème c'est qu'on a une lenteur immense pour faire les éditions (on utilise pour cela JasperReports). Ce que j'ai remarqué c'est que lorsque la lenteur apparaît après 5 minutes à peu près d'un redémarrage de TOMCAT. autrement dit, lorsque je redémarre TOMCCAT (installé comme service Windows) les utilisateurs arrivent à éditer sans problème, mais juste après 5 minutes de ce redmérrage, personne n'arrive à éditer.
    TOMCAT est saturé après 5 minutes de chaque redmérrage ou quoi?
    Une piste s'il vous plaît
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    [mode troll]
    Windows n'est pas un serveur de production
    [/mode troll]

    Il faudrait analyser plus en détail, avec par exemple et en vrac :
    1. un bench sur une montée en charge progressive : déterminer s'il y a un seuil de clients au delà duquel l'application s'effondre,
    2. analyser finement les ressources utilisées lors de la montée en charge : mémoire, accès disques, communication réseau,
    3. rechercher plus précisément le point qui bloque, ajouter des logs avec des calculs de temps d'exécution intermédiaire. Mais ne connaissant pas l'architecture je ne peux pas en dire plus,
    4. accepter la possibilité d'une action extra-terrestre malveillante...
    5. ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    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
    2. analyser finement les ressources utilisées lors de la montée en charge : mémoire, accès disques, communication réseau,
    J'ajouterais à cette liste de ressource les connexions à la base ; en supposant que ton application utilise une datasource.

  4. #4
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Citation Envoyé par hasalex Voir le message
    J'ajouterais à cette liste de ressource les connexions à la base ; en supposant que ton application utilise une datasource.
    Oui j'utilise une DataSource, mais c'est quoi le rapport?
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  5. #5
    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
    La datasource gère un pool de connexion, qui est une ressource parmi d'autre. Il faut donc que tu vérifies si elle est bien dimensionnée, et si tes utilisateurs ne la saturent pas.

    C'est exactement la même démarche pour la mémoire et pour les pools de threads des connecteurs HTTP.

  6. #6
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Citation Envoyé par hasalex Voir le message
    La datasource gère un pool de connexion, qui est une ressource parmi d'autre. Il faut donc que tu vérifies si elle est bien dimensionnée, et si tes utilisateurs ne la saturent pas.

    C'est exactement la même démarche pour la mémoire et pour les pools de threads des connecteurs HTTP.
    C'est intéressant ce que tu dis mais please plus de détails
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  7. #7
    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 JauB Voir le message
    TOMCAT est saturé après 5 minutes de chaque redmérrage ou quoi?
    Une piste s'il vous plaît
    Tomcat n'a rien à voir dans l'histoire. La première chose à vérifier: quand c'est "saturé", la charge cpu de la machine est-elle élevée ou pas? La charge mémoire de la jvm, est-elle élevée ou pas?

    Dans le premier cas, tu lance des threads quelconque et ils continuent de travailler pour rien.
    Dans le second cas, t'as des memory leaks et tu sature la mémoire (-> plus de ressources).

    Faire un Thread dump lors de la saturation devrait permettre de voir où attendent les Threads.

    Note, si l'application sature au bout de seulement 5 minutes, il est assez étonnant que ce ne se soit pas remarqué en développement!!!

  8. #8
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tomcat n'a rien à voir dans l'histoire. La première chose à vérifier: quand c'est "saturé", la charge cpu de la machine est-elle élevée ou pas? La charge mémoire de la jvm, est-elle élevée ou pas?

    Dans le premier cas, tu lance des threads quelconque et ils continuent de travailler pour rien.
    Dans le second cas, t'as des memory leaks et tu sature la mémoire (-> plus de ressources).

    Faire un Thread dump lors de la saturation devrait permettre de voir où attendent les Threads.

    Note, si l'application sature au bout de seulement 5 minutes, il est assez étonnant que ce ne se soit pas remarqué en développement!!!
    Veux tu bien me montrer comment vérifier chaque action? ( à part celle de la CPU ).
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  9. #9
    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
    Voici quelques références pour la datasource



    Pour utiliser jconsole, avant de lancer Tomcat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export CATALINA_OPTS=-Dcom.sun.management.jmxremote
    Puis dans jconsole, tu vas dans l'onglet MBeans, puis tu cherches déplie l'arbre à gauche : Catalina / Datasource / ...

  10. #10
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    Essai de faire quelque bidouille pour localiser le problème.
    redemarre Tomcat mais ne laisse qu'un seul utilisateur travailler pour voir déjà est ce que c'est dû au utilisateurs nombreux.
    Si oui alors essai de voir à partir de quelle nombre d'utilisateur le problème commence.

    Astuces que j'ai déjà utilisé dans une application que j'avais faite: La notion de préchargement.Je m'explique : Lors de la première connexion de mon utilisateur je charge toutes les données qui ne seront pas modifiées pendant sa session et je l'ai garde dans sa session. De ce faite le premier chargement peut prendre une minute mais après plus besoin de consulter la base pour prendre les données puisque ces dernières sont disponibles.

  11. #11
    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
    Attention jiddou ! Ta technique peut aussi être catastrophique. Un client faisait pareil, avec des sessions de 40Mo, ça limitait franchement sa montée en charge...

    Je crois qu'aujourd'hui on a des outils de monitoring qui permettent de quantifier l'usage des différentes ressources. Il faut juste comprendre le fonctionnement de tomcat, pour mettre le doigt sur ce qui flanche.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Pour evaluer la montée en charge de ton serveur tomcat tu as plusieurs solutions, LoadRunner et Apache JMeter qui est une solution libre ( http://jakarta.apache.org/jmeter ) tu pourrais générer des tests sur ton serveur.

  13. #13
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    200 connexions en 5 minutes ca me parait quand meme beaucoup, c est une appli qui tourne sur le net?
    ca pourrait etre aussi qu il y a trop de connexion simultanée peut etre qu'il te faudrait faire du load balancing avec un autre serveur

  14. #14
    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 JauB Voir le message
    Veux tu bien me montrer comment vérifier chaque action? ( à part celle de la CPU ).
    Pour la mémoire -> voir la mémoire système (si au bout de 5 minutes, ta JVM occupe 1G de ram, c'est déjà un problème).

    T'as aussi des outils comme lambda probe à installer sur tomcat, qui te permettront de voir la charge cpu, la charge mémoire et l'occupation de tes datasources.

  15. #15
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pour la mémoire -> voir la mémoire système (si au bout de 5 minutes, ta JVM occupe 1G de ram, c'est déjà un problème).

    T'as aussi des outils comme lambda probe à installer sur tomcat, qui te permettront de voir la charge cpu, la charge mémoire et l'occupation de tes datasources.
    Oui j'utilise lambda probe mais je ne comprends pas trop ce qu'il offre!
    et comment dois-je agir en conséquence!
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  16. #16
    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
    dis nous déjà ce qu'il en est dans lambda probe lors du blocage (utilisation cpu, utilisation datasources, utilisation mémoire)

  17. #17
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    En pièce jointe un aperçu sur le DataSource.
    Les chiffres 8, 8, 4 sont figés quelque part ou quoi?
    Je ne peux pas par exemple augmenter le premier chiffre 8 qu'est :
    M
    maximum number of connections in the pool ?
    Images attachées Images attachées  
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  18. #18
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    dis nous déjà ce qu'il en est dans lambda probe lors du blocage (utilisation cpu, utilisation datasources, utilisation mémoire)
    Si tu as besoin de plus de capture je peux le faire tout de suite
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  19. #19
    Rédacteur
    Avatar de JauB
    Homme Profil pro
    Freelancer
    Inscrit en
    Octobre 2005
    Messages
    1 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Freelancer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 792
    Points : 2 914
    Points
    2 914
    Par défaut
    Une autre capture sur le Quick check.
    Images attachées Images attachées  
    Mes articles, Mon Blog

    Rubrique Jasper/iReport :
    ------- Forum Jasper --------
    ----- FAQ Jasper/iReport -----


  20. #20
    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
    Visiblement, ta datasource a conservé sa configuration par défaut. Il n'est pas étonnant qu'il y ait des blocage : 200 utilisateurs se partagent 8 connexions à la base !!!

    Passe ce paramètre à 30, ou 50, selon ce que ta base peut supporter et fais un monitoring plus régulier pour voir le maximum atteint.

Discussions similaires

  1. Docs, Tutoriels et astuces Tomcat et JBoss (US)
    Par Ricky81 dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 13/03/2009, 21h00
  2. [Perf] Lenteur d'Eclipse couplé avec un serveur Tomcat
    Par Sgrat dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/10/2008, 18h31
  3. [Tomcat][Struts] Lenteur upload avec ie
    Par Yali dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 26/08/2005, 16h52
  4. Lenteur d'execution de Jbuilder 6
    Par Tsimplice dans le forum JBuilder
    Réponses: 6
    Dernier message: 18/12/2002, 14h41
  5. Tomcat + Apache-SOAP
    Par lucho31 dans le forum Services Web
    Réponses: 3
    Dernier message: 17/10/2002, 09h55

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