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 :

Avoir l'utilisation de CPU de chaque Thread en RunTime ?


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Par défaut Avoir l'utilisation de CPU de chaque Thread en RunTime ?
    Bonjour,

    J'ai un petit serveur d'MMORPG qui donne 1 thread à chaque client. (+ quelques threads en bonus qui s'occupent de rafraichir les MAPs du jeu, les monstres, et les events etc)

    À un certain moment, je ne sais pas si c'est une attaque DoS ou une loop infinit quelques parts, mais le CPU du serveur se met à 100% et ne baisse plus. Ce qui cause des lags.

    J'aimerais savoir quelle est le thread dans le processus java.exe qui bouffe toutes les ressources du CPU (et RAM si possible) en RunTime, est ce possible avec Java? Ou existe-il une application (Windows) qui le permet ?

    Je cherche à savoir de quel Thread ça vient, pour que je puisse réviser mon code et optimiser. Sans quoi ça va me prendre à jamais.

    Merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    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
    Par défaut
    Bonjour

    Vous pouvez utiliser process explorer, un utilitaire windows qui donne beaucoup d'infos sur les process en cours, et le détail des threads lancés. Ca devrait suffire pour diagnostiquer si le nombre de threads est normal et si la charge est répartie.

    Ensuite, vous pouvez utiliser un profiler java pour analyser précisément où le programme passe le plus de temps.

    Enfin, n'oubliez pas qu'avant de passer un code en production il est recommandé d'utiliser des outils de diagnostics tels que FindBugs pour détecter des sources potentielles de bugs.

    Pour conclure, sachez que le modèle "un thread par client" trouve très rapidement ses limites. Vous ne pourrez jamais dépasser 4000 connectés, et encore vous aurez du mal à monter à cette charge.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif Avatar de tim974
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 175
    Par défaut
    Salut,

    entièrement d'accord avec Aldian.

    Sauf pour la fin, je pense que la contrainte de charge donnée par l'utilisation des Threads, 4000 connectés pour un serveur, suffit amplement, dans le cadre d'un MMORPG.

    Citation Envoyé par Aldian Voir le message
    Pour conclure, sachez que le modèle "un thread par client" trouve très rapidement ses limites. Vous ne pourrez jamais dépasser 4000 connectés, et encore vous aurez du mal à monter à cette charge.

  4. #4
    Membre éclairé
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 28
    Par défaut
    Pour repondre a ta question initiale, VisualVM dans le SDK correspond a tes besoins me semble t'il.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Par défaut
    Merci beaucoup beaucoup pour vos réponses, c'est exactement ce que je cherchais !

    J'ai tout tester, et la meilleur solution pour moi été celle de fallo (VisualVM). J'ai trop aimer, trop simple, trop puissant, trop rapide. Il s'occupe de tout et donne à la fin les fonctions les plus mal optimisés du code.

    Je le note 20/20.


    Toute fois, avant de pouvoir installer le VisualVM, j'ai dû télécharger un truc java appelé SDK qui remplace la virtual machine par défaut installée sur mon serveur. J'ai exécuter maintenant mon serveur en mode SDK. Je m'y connais absolument rien. Ce que je veux savoir c'est: Est-ce que l'execution du serveur en mode SDK va baisser les performances du serveur ?

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

Discussions similaires

  1. utilisation et déclaration d'un thread
    Par je®ome dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 01/05/2006, 12h23
  2. [VBA-E] Procédure utilisée au chargement de chaque feuille
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2006, 16h46
  3. [Eclipse 3.1 et WTP 0.7M5] Utilisation du CPU à 100%
    Par stanislas dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/07/2005, 23h21
  4. [Windows 2003 Server] Problème d'utilisation du CPU
    Par Quentin dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 11/04/2005, 11h26
  5. Trouver le % d'utilisation du CPU
    Par le mage tophinus dans le forum Assembleur
    Réponses: 20
    Dernier message: 21/04/2003, 19h43

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