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 :

Comment éviter la saturation de 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 Comment éviter la saturation de TOMCAT?
    Bonjour,
    j'ai une application J2EE déployée sous TOMCAT5.5 sous windows.
    Le problème c'est que cette application se bloque et on est obligé de redémarrer TOMCAT à chaque constatation d'un blocage et après ça marche.
    N'y aurait il pas une façon plus propre pour gérer tout ça?
    Merci d'avance
    Mes articles, Mon Blog

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


  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tout dépend de ce qui bloque...
    Il serait bien de mettre quelques détails quand même
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    Et beh c'est une aplication J2EE qui se connecte à une base de données sous DB2 (AS400). c'est une application purement de Reporting, donc elle ne fait que de la consultation et pas de saisie de données. L'application marche bien lorsque TOMCAT vient d'être demarré mais après je dirai une 20 de minutes alors le système ne répond pas.
    voilà si tu as d'autres questions...
    Mes articles, Mon Blog

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


  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est l'interface web qui ne répond plus ou les classes de génération des états ?
    Certaines de tes classes utilisent "synchronize" ?

    Peut-être qu'un bout de code (client et édition) pourrait aider (si c'est possible et pas trop volumineux) ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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 fait même mon interface web est constitué à partir de la base.
    En effet, mes composants (combobox, calendrier...) sont stockés dans la base de données (leur code de création qui est stocké bien sûr) et c'est en fonction de l'état demandé que j'affiche tel ou tel composant (mes composants sont paramétrés en fonction des états).
    Donc, lorsque l'utilisateur demande un état via l'URL ( du genere http://.....init.jsf?reportId=etatDe...metre1=valeur1...)
    Donc là mon application lit l'URL et constate que l'état demandé est etatDemande et lit dans la base de données les composants à afficher et commence à construire les composants dans la page web.
    Pour le code je ne peux pas l'afficher car tout simplement il est très très très volumineux et repose sur un framework développé par une SSII...
    Voilà s'il y a encore une piste?
    Merci.
    Mes articles, Mon Blog

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


  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    ben non, désolé...

    Soit :

    1- c'est un problème de code
    => on n'y a pas accès

    2- c'est un problème de serveur
    => tu pourrais tester avec JBoss par exemple, au moins, ça isolera le problème.
    Si ça fonctionne, on peut éliminé le problème de code (en partie)
    Si ça ne fonctionne pas, il reste le problème de code

    Bonne chance
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par JauB Voir le message
    L'application marche bien lorsque TOMCAT vient d'être demarré mais après je dirai une 20 de minutes alors le système ne répond pas.
    Le symptôme est un blocage de l'application Web, il devrait y avoir des traces d'erreur dans la log : OutOfMemory, différents timeout (par exemple si tout les threads gérant les requêtes HTTP sont occupés, au bout d'un moment, une nouvelle requête se fait jetter) ... Ce genre d'exception permettrait d'aider au diagnostique.
    Vérifie également la consommation CPU du serveur hébergeant TOMCAT lors d'un freeze, 100% ==> boucle infinie ? 0% ==> dead lock côté base de données ?

  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
    Je suis entrain de chercher comment déployer mon application sur JBOSS, j'y reneocntre encore des difficultés car l'architecture de notre application est un peu compliqué, enfin je ne suis pas architecte pour la qualifier de compliquée ou pas
    Sinon, comment JBOSS pourrait nous aider à isoler le problème, c'est nouveau pour moi ça
    Mes articles, Mon Blog

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


  9. #9
    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
    Au moment du prochain plantage je vous posterai le log affiché sur la console de ECLIPSE (car je démarrae TOMCAT à partir d'ECLIPSE, si vous connaissez un moyen plus adéquat je peux m'y mettre). Ou ue tu veux que je cherche au niveau d'autres fichiers logs propres à TOMCAT?
    sinon pour :

    Citation Envoyé par djsnipe Voir le message
    Vérifie également la consommation CPU du serveur hébergeant TOMCAT lors d'un freeze, 100% ==> boucle infinie ? 0% ==> dead lock côté base de données ?
    J'ai pas compris, le CPU je peux le voir mais "lors d'un freeze..." je vois pas trop ce que tu veux dire!
    Mes articles, Mon Blog

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


  10. #10
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par JauB Voir le message
    Sinon, comment JBOSS pourrait nous aider à isoler le problème, c'est nouveau pour moi ça
    Sur le principe, c'est pour vérifier qu'il ne s'agit pas d'un bug de Tomcat. Si l'application fonctionne sur JBoss, c'est que quelque chose se passe mal sous Tomcat. Mais perso, je vote pour un problème dans le code

  11. #11
    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 djsnipe Voir le message
    Mais perso, je vote pour un problème dans le code
    Je ne pense pas , à noter qu'elle a été développée (ou du moins les grandes lignes) par un Architecte J2EE. Mais bon il se peut que le poblème provienne du code qui sait!
    Mes articles, Mon Blog

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


  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Pour moi aussi il s'agit très certainement d'un problème de code... mais sait-on jamais

    Pour ce qui est de JBoss, c'est pour isoler un problème de serveur, ou de version de composant du serveur.
    Je te conseille de télécharger la version 4.2.2.
    Pour ce qui est du déploiement sur JBoss, soit tu utilises eclipse avec une définition de serveur JBoss 4.2, soit tu colles le war de ton application dans le répertoire "deploy" du serveur JBoss

    Exemple : "D:\Program Files"\jboss-4.2.2.GA\server\default\deploy

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ce serait pas un probleme de freeze lors de la connexion à la base de données par hasard? Moi ça m'était arrivé quand je fermais mal mes connexions, du coup au bout d'un moment il n'y avait plus de connexions disponibles, mais au lieu de renvoyer une exception ce gland bloquait sur le getConnexion().
    Donc mon conseil: vérifie que tous tes resultSet, Connexion, DataSource et compagnie se referment bien quand ils ne sont plus utilisés.
    Si tu veux tester facilement regarde si le nombre d'accès à la servlet mise en cause n'est pas toujours le meme avant le freeze.

    Edit: si l'application est garantie le probleme vient peut etre de la base qui ne peut pas supporter la charge de connexion du coup
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  14. #14
    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
    Eactuellement, sur TOMCAT je ne déploie pas mon application sous forme de war, j'attaque directement mes dossiers de développement. dans le fichier server.xml de TOMCAT je déclare mes deux contextes comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Context path="/commun" reloadable="true" docBase="C:\projet\projet-commun-view" workDir="C:\projet\projet-commun-view\work" crossContext="true">
    <Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
    <Resource name="jdbc/LiferayPool" auth="Container" type="javax.sql.DataSource"
    username="test"
    password="test"
    driverClassName="com.ibm.as400.access.AS400JDBCDriver"
    url="jdbc:as400://192.168.68.52"
    />
    </Context>
    <Context path="/reporting" reloadable="true" docBase="C:\projet\projet-reporting-view" workDir="C:\projet\projet-reporting-view\work" crossContext="true" />
    
    Comme vous pouvez le constater, mon application c'est bien reporting, Mais le contexte commun de l'application projet-commun-view doit être chargé en premier lieu pour loader certains services (ldap, ftp, certains trucs de mapping...) en gros le commun rentre dans le cadre d'un framework. Sur TOMCAT je ne rencontre aucune difficulté mais sur JBOSS je ne sais pas comment m'y prendre!
    Mes articles, Mon Blog

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


  15. #15
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Si tu utilises une version de JBoss embarquant Tomcat, ok la config sera la même mais le test n'aura plus de sens .... Sinon, pour JBoss, essaye de copier directement tes 2 répertoires contenant des structures de WAR dans le répertoire deploy.

    Mais sinon, tu n'as vraiment pas de stacktrace dans tes logs tomcat ?

  16. #16
    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 djsnipe Voir le message
    Mais sinon, tu n'as vraiment pas de stacktrace dans tes logs tomcat ?
    Comment vérifier ça?
    Mes articles, Mon Blog

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


  17. #17
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par JauB Voir le message
    Comment vérifier ça?
    Pardon, je n'avais pas correctement lu un de tes post. Les traces que tu as dans Eclipse iront très bien, elles doivent représenter la sortie standard, à l'identique de fichiers de logs produits par Tomcat (enfin, selon la conf ...).

    Citation Envoyé par JauB Voir le message
    J'ai pas compris, le CPU je peux le voir mais "lors d'un freeze..." je vois pas trop ce que tu veux dire!
    le freeze, c'est quand l'application va cesser de répondre, et donc juste avant que tu redémarre le Tomcat. Je n'ai pas été très clair c'est vrai

  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
    Comment vérifier alors ceci :
    lors d'un freeze, 100% ==> boucle infinie ?
    0% ==> dead lock côté base de données ?
    ??
    Mes articles, Mon Blog

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


  19. #19
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Et bien, avec un serveur sous windows, tu peux utiliser le gestionnaire de tâches...
    Sous Linux, je ne connais pas les commandes, mais elles existent
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    La boucle infinie, difficile autrement qu'avec une relecture de code.
    Le dead-lock devrait se repérer au bout d'un moment par le SGBD (je pense qu'ils ont tous un deamon en standard pour vérifier ce genre de situation, mais à vérifier avec qq'un de pointu sur le sujet) et donc par une jolie SQLException dans une loggue (sauf si les exceptions ne sont pas loggués, mais là, ce serait vraiment dire que le code n'est pas terrible).

Discussions similaires

  1. Comment éviter le lancement automatique de CBuilder
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 26/01/2005, 18h35
  2. Comment éviter les doublons dans ma table
    Par einegel dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/11/2004, 13h18
  3. [TEdit] Comment éviter le bip ?
    Par portu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2004, 13h01
  4. Réponses: 4
    Dernier message: 28/07/2004, 11h42
  5. [eclipse 2.1][compilation] Comment éviter...
    Par ftrifiro dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 17h16

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