2010-12-02 25 views
2

J'ai récemment commencé à développer une application Web JBoss SEAM (site d'enchères). Jusqu'à présent, je suis arrivé très bien, mais récemment j'ai eu de longs temps de chargement (en particulier sur les ressources comme les fichiers javascripts/css, mais aussi les pages elles-mêmes sont lentes).Profilage/débogage Application JBoss AS/Seam

Existe-t-il un profileur pour JBoss SEAM/AS où je peux voir quelles classes sont en mémoire, etc.?

Quelle pourrait être la raison pour laquelle les temps de chargement sont élevés sur les fichiers CSS/JS/images? En raison des raisons de développement, je n'ai pas encore activé les filtres de cache Web proposés par Seam. Ce sont mes arguments VM

 

-Drebel.log=true -noverify -javaagent:"C:\Program Files\ZeroTurnaround\JRebel\jrebel.jar" -Drebel.hibernate_plugin=true -Drebel.seam_plugin=true -Drebel.jboss_plugin=true -Drebel.allow_bytecode_proxy=true -Dprogram.name="JBoss 5.1 Runtime" -Djava.endorsed.dirs="C:\Java\jboss\as5.0\lib\endorsed" -Dproject.home="C:\Java\jboss\as5.0\server\default\deploy\botenveiling.war" -Xms1024m -Xmx1024m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=512m -Xverify:none 
 

J'ai fait quelques tweaks (supprimé certaines des applications par défaut): http://www.jaysonjc.com/programming/how-to-configure-jboss-as-production-settings-and-tuning-tips.html

J'utilise WAR explose pour déployer mes fichiers sur le serveur.

Configuration:

  • JBoss Application Server 5.1
  • JBoss SEAM 2.2.2CR1
  • JRebel
  • PrimeFaces 1.1

système

  • Intel Core 2 Duo E6550
  • 4 Go de mémoire

Répondre

2

J'ai écrit un billet de blog où je montrais un intercepteur qui permet de mesurer chaque appel de méthode que vos composants utilisent. De cette façon, vous pouvez voir quelles méthodes utilisent depuis longtemps et trouver des bogues dans votre code. Regardez here et faites défiler jusqu'au second exemple.

Vous obtiendrez une sortie comme ceci:

284.94 ms 1 FooBean.getRandomDroplets() 
    284.56 ms 1 GahBean.getRandomDroplets() 
    201.60 ms 2 SohBean.searchRatedDoodlesWithinHead() 
    185.94 ms 1 FroBean.doSearchPopular() 
    157.63 ms 1 FroBean.doSearchRecent() 
    42.34 ms 1 FooBean.fetchMostRecentYodel() 
    41.94 ms 1 GahBean.getMostRecentYodel() 
    15.89 ms 1 FooBean.getNoOfYodels() 
    15.00 ms 1 GahBean.getNoOfYodels() 
    9.14 ms 1 SohBean.mainYodels() 
    1.11 ms 2 SohBean.trackHoorayEvent() 
    0.32 ms 1 FroBean.reset() 
    0.22 ms 43 NohBean.thumbPicture() 
    0.03 ms 18 FooBean.getMostRecentYodels() 
    0.01 ms 1 NohBean.profilePicture() 
    0.01 ms 1 FroBean.setToDefault() 
    0.01 ms 1 FroBean.getRecentMarker() 

En second lieu, il y a une page de profil sur le Seam knowledge-base, mais ce n'est pas vraiment bon.

Dan Allen a également écrit un article en deux parties sur l'accélération de votre application jsf qui vaut la peine d'être lu.

Part 1

Part 2


Un Firebug comme outil est également un must pour l'outillage javascript/performance ajax

+0

Ce intercepteur est agréable! Merci pour cela :) Beaux articles aussi bien sur les aspects plus avancés/performance de SEAM. J'ai déjà installé FireBug et il semble que les ressources comme les javascripts, les feuilles de style, les images, etc. prennent 1-2 secondes à charger (l'utilisation des primitives provoque beaucoup de temps de chargement). Une page normale se charge en 200-400 ms.Cest tout à fait oke je suppose, mais encore il pourrait être plus rapide :) –

+0

Peut-être il y a des tweaks de Primefaces que vous pouvez faire. Par exemple, dans web.xml dans Richfaces, nous pouvons compresser les scripts et css via la configuration. Je suis sûr que Primefaces a quelque chose de similaire. Cela pourrait aider beaucoup –