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

Java Discussion :

Mes threads se bloc plus avec la jvm 6 qu'avec la jvm 5u22


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut Mes threads se bloc plus avec la jvm 6 qu'avec la jvm 5u22
    Bonjour,


    j'ai fait un test entre deux version de la jvm : jvm 6u18 et la jvm 5u22 avec la meme application et dans les meme condition

    à la fin des tests je trouve que la jvm 5 arrive a exécuter plus d'itération (action sur l'application ) alors que les temps de réponse sont suppérieur à ceux obtenue avec la jvm 6 qui exécute moins d'intération.
    voici les valeur obtenu pour un test d'une heure

    jvm 5u22 : environ 7427 action avec un temps de réponse environ 1.7s l'action
    jvm 6u18 : environ 6985 action avec un temps de réponse environ 1.1s

    j'arrive pas a comprendre comment on peu exécuter plus avec des temps de réponse plus elevé.

    j'ai calculer avec l'outils VisualVM le temps "Monitor" de mes threads (j'ai 100 threads qui exécute ces actions : je trouve :

    jvm 5u22 : temps total passé dans le monitor est 945s(9.45s par threads)
    jvm 6u18 : temps total passé dans le monitor est 2139s ( en moyen 21 s par thread)

    commen on peu avoir un tels résultat? et pourkoi mais threads se bloc plus avec la jvm 6

    merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Bonjour,

    j'ai fais un programme avec jmx qui fait un stack dump chaque fois qu'un de mes threads se bloc

    j'ai comparer les résultats avec les deux versions de la jvm 5u22 et 6u18

    j'ai trouvé que

    mes threads avec la jvm 6 se bloc 129 fois (un test de 20min avec 100 utlisatteur) sur un objet de type : "org.apache.jasper.servlet.JspServletWrapper" alors que les threads avec la jvm 5u22 se bloc uniquement 28 fois

    commen je peu interprété ce résultat

    et que fais cet objet : "org.apache.jasper.servlet.JspServletWrapper"

    merci

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme on a pas ton code, on peut pas savoir comment tu gère tes Threads et t'expliquer la différence. 1s / action pour une application web, c'est beaucoup.

    Pour le cas "plus d'action avec plus d'attente par action" c'est finalement tout a fait normal. Si j'exécute 500 opérations par minutes, par tranche de 100 opérations en // ou de 200 opération en // qui saturent le CPU dans les deux cas. Le temps total sera similaire, mais le temps passé dans chaque Threads pour le deuxième cas sera supérieur (deux fois plus élevé). Il ne faut donc pas confondre temps de réponse et nombre de requetes par minute dans un serveur. Si je met un seul thread à tomcat, son temps de réponse va être extrèmement bas, par contre le nombre de pages servies à la minute risque d'être médiocre.

  4. #4
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    comme on a pas ton code,
    le code est un portail liferay sur lequel je fais un test de charge avec 100 utilisateurs virtuel

    Citation Envoyé par tchize_ Voir le message
    on peut pas savoir comment tu gère tes Threads et t'expliquer la différence.
    les threads sont géré par jboss, j'ai fait une capture de script de l'ensemble de mes actions sur le portail, ce script est utilisé par le generateur de charge.
    les temps de réponse sont retourné par ce generateur.

    Citation Envoyé par tchize_ Voir le message
    1s / action pour une application web, c'est beaucoup.
    bon, c'est liée à la perfromance de la machine de test (c'est pas une machine de production)

    Citation Envoyé par tchize_ Voir le message
    Pour le cas "plus d'action avec plus d'attente par action" c'est finalement tout a fait normal. Si j'exécute 500 opérations par minutes, par tranche de 100 opérations en // ou de 200 opération en // qui saturent le CPU dans les deux cas. Le temps total sera similaire, mais le temps passé dans chaque Threads pour le deuxième cas sera supérieur (deux fois plus élevé). Il ne faut donc pas confondre temps de réponse et nombre de requetes par minute dans un serveur. Si je met un seul thread à tomcat, son temps de réponse va être extrèmement bas, par contre le nombre de pages servies à la minute risque d'être médiocre.
    les deux test sont faite dans les meme condition, avec le meme transaction rate, je lance 100 utilisateurs qui se connecte au portail , loop sur un ensemble d'action, puis à la fin du test ( après une heure) ils se deconnecte.
    la comparaison est combien d'itération dans le loop on fait

    c toujours les 100 threads crée par jboss qui serve les 100 VU.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Sfaxiano Voir le message

    bon, c'est liée à la perfromance de la machine de test (c'est pas une machine de production)

    Faire des tests de perf sur une machine non liée à la production ne sert à rien, en gros, les résultats seront complètement différent, voir parfois inversés. Il faut une machine similaire pour tirer la moindre conclusion sur les tests.

    les deux test sont faite dans les meme condition, ...
    Je disais juste qu'il n'y a pas de lien entre le temps de réponse moyen et le nombre réponses données. De plus, des résultats moyen ne servent à rien, si on a pas la dispersion, la variance et la marge d'erreur.


    Enfin,
    -> org.apache.jasper.servlet.JspServletWrapper est une classe internet à tomcat.
    -> faire un stackdump prend du temps, ce qui va influencer ta mesure
    -> je suis pas toujours certains de comprendre ce que tu monitore avec tes "blocages"....

    Il y a plein de choses qui peuvent mettre une page web en attente:
    -> plus de sockets dispos
    -> attente d'un connection du pool
    -> synchronisation d'un cache interne au conteneur
    -> ......

    A toi de jouer, sur une machine calibrée comme la prod, le nombre de Thread HTTP, le nombre de connections dans le pool, etc pour optimiuser tes temps de réponse.

  6. #6
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Août 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2008
    Messages : 176
    Par défaut
    Citation Envoyé par tchize_ Voir le message

    -> je suis pas toujours certains de comprendre ce que tu monitore avec tes "blocages"....
    .
    lorsque j'ai calculé le temps de blocage total de tous les threads qui serve les utilisateur (http-..........) j'ai trouvé que la différence est presque égale au temps necessaire pour faire les actions en plus.
    donc je me suis dis que il faut voir ou mais threads sont bloqué et pourquoi la jvm 5u22 se bloque moins par rapport à la jvm 6 alors que c'est le meme test et dans les memes conditions

    j'arrive pas à trouver une réponse (une semaine d'investigation)

Discussions similaires

  1. [c#] Problème avec mes thread/delegate
    Par el_filosof dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/09/2007, 15h10
  2. Réponses: 2
    Dernier message: 10/09/2006, 17h24
  3. [Configuration] Mes utilisateurs ne reçoivent plus leur mail d'inscription
    Par Chronax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 14/05/2006, 14h38
  4. [EasyPHP] Plus de PHP ni de debugging avec EasyPHP 1.6
    Par JSuper_Kitten dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 23/09/2005, 08h19
  5. Tiens, mes users ne peuvent plus accéder à la base
    Par GLDavid dans le forum Requêtes
    Réponses: 12
    Dernier message: 08/12/2003, 09h52

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