Wooden Posté(e) le 14 mai 2006 Partager Posté(e) le 14 mai 2006 Bonjours Je me demandais si vous auriez pas quelque conseil pour debugger des applications un peu lourdes en Java. En gros l'application c'est un server de jeu: - extrêmement multi-threadée :10% du code dans 2-3 threads qui vivent pendant toute la durée de vie du serveur et 90% du code qui tourne dans des threads pool (scheduled ou pas) - bouffe pas mal de mémoire : (~300Mo au démarrage) - assez complexe (~950 .java) le problème principal de ce serveur c'est les performances qui se dégradent au fur et à mesure (de façon différentes selon les server (même code mais ordinateur/platforme différente) : ça varie entre 1h et 12h d'uptime avant apparition des problèmes) ce qui aboutis à soit un léger lag qui perturbe le jeu soit à d'énorme freeze ou le server à l'air complètement stoppé d'un point de vue joueur. J'ai pu utiliser YourKit pour essayer un peu de profiling mais j'ai rien réussit à en tirer d'intéressant. Au cazou l'application en question c'est L2j(forum) ici la Trac (SVN/tickets/logs) Si vous avez des idées pour debugger des grosse applications java comme ça... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Wooden Posté(e) le 10 juin 2006 Auteur Partager Posté(e) le 10 juin 2006 hum, ce topic à été placé dans les section web apres le split web/porg. peut être serait-il mieux dans la section programation? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Quarky Posté(e) le 10 juin 2006 Partager Posté(e) le 10 juin 2006 Un petit panneau pour avertir les modos : Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 10 juin 2006 Partager Posté(e) le 10 juin 2006 Modo ninja en action ! Téléportation vers la section Programmation ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
sbruchet Posté(e) le 13 juin 2006 Partager Posté(e) le 13 juin 2006 Pour debuguer du java, j'utilise Eclipse et je debug en remote (ca fonctionne bien à condition que ton serveur de dev possede sufissament de mémoire vive). Faut rajouter les options suivante -Xrunjdwp:transport)dt_socket,address=4301,server=y,suspen=n lors du lancement du java. Tu trouveras plus d'info sur Internet. Ensuite tu debug avec eclipse en remote en spécifiant ton ip et le port 4301. Pour ton problème, il faut mieux faire du profilage, j'utilise 'ru.nlmk.eclipse.plugins.profiler'. Novolipetsk Iron and Steel Corporation. L'idée tu fait un dump de la mémoire au départ (c'est long donc ne coupe pas au milieu vas plustot boire un cafée) Tu utilise ensuite ton appli, jusqu'a l'augmentation de ta mémoire Et la tu redump Tu regarde quelle classe à grossit quelle classe possède beaucoup trop d'instance tout en comparant avec le précédent dump. (Tu peut les sauvegarder en utilisant les options d'export du plugin et les comparer dans Excel par exemple) Bon courage. Edition : remplacement de mémoire vide par mémoire vive c'est mieux comme ca Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.