Blog de G. MOKOLOMBOKA

Ingénieur J2EE, Flex, Intégration

Monitoring, profiling logiciel

Bookmark this on Hatena Bookmark
Hatena Bookmark - Monitoring, profiling logiciel
Share on Facebook
Post to Google Buzz
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
Monitoring, profiling logicielBlog de G. MOKOLOMBOKA

Suite à mon article intitulé Profiling et montée en charge logiciel, voici un autre article en complément sur comment faire pour améliorer les performances de votre Application ? Questionnement, toujours le questionnement !

Context:

Votre développement est fini, l’Application est en production le client n’arrête pas d’appeler votre service support pour se plaindre; pas pour des problèmes d’utilisation mais de lenteur, et autres problèmes liés à la performance.

Vous recevez des logs tous les jours mais vous ignorez complètement d’où vient le problème … Avant de paniquer et de faire un CC de vos logs dans google,

Posez les bonnes questions:

1- Utilisons-nous un profiler ?

Le profiler va vous aider à trouver facilement la partie du code ou le module qui pose problème.

Les détails sur le profiling sont donnés dans mon précédent article Profiling et montée en charge logiciel.

2- Utilisons-nous des outils de test du code ?

Si votre système d’intégration est bien rodé, votre code source devrait déjà être optimisé sinon  lisez mon article sur les Tests logiciel.

Vous pouvez également utiliser des outils comme findbugs afin de détecter les bugs et optimiser vos codes sources.

3- Faisons-nous des tests de charge ?

JMeter permet de générer des tests de charge assez réalistes. Même si sa configuration n’est pas facile, cet outil fait parti des favoris en matière de test de performance. Vous pouvez également lire mon article sur profiling et montée en charge logiciel.

4- Analysez-vous vos requêtes SQL avec un outil ?

La base de données est souvent un des gros problèmes que nous ignorons lors du développement de l’Application.

Il faut donc mettre en place des indicateurs de performance de vos requêtes SQL.  La plupart des bases de données de nos jours proposent des outils d’analyse des requêtes: MySQL propose un analyseur « slow query log », c’est-à-dire un fichier log dans lequel sont stockées toutes les requêtes trop lentes. Il suffit de configurer correctement MySQL et d’attendre que le fichier se remplisse.

Cf mon article sur la configuration du logs slow query log: activation Log MySQL.

5- Utilisons-nous un cache, et si oui avec quoi le monitorons-nous ?

Un système de cache permet généralement d’améliorer les performances de votre application.

La plupart des outil de mapping comme Hibernate intégre ce genre de cache:

  • ’native’ : cache de niveau 1 dit cache ’Session’.
  • le cache de niveau 2, idéal pour mettre en cache vos données de références: EHCache, OSCache.

Il y a également d’autres types de caches comme les caches Web.

6. Avons-nous un monitoring activé sur le site en production ?

Je vous déconseillerais de supprimer le monitoring en production car c’est pendant cette période que votre application est mise en situation réelle d’utilisation par le client. Le monitoring va vous donner les indicateurs nécessaires à la résolution de vos bugs.

7- Avons-nous fait des tests de notre hardware ?

Un matériel défectueux peut avoir un impact très négatif sur les performances d’une Application, par exemple si vous stockez vos données sur un disque SAN(Storage Area Network) ou NAS(Network Attached Storage).

Il existe pour cela des outils (Bonnie++ sous Linux, ou tout simplement certaines commandes iostat).

Si  votre matériel est virtualisé, la question de performance est encore à voir de plus prêt car il peut alors y avoir des différences de comportement très importants par rapport à un matériel physique.

Le cas classique étant une application Java utilisant la mémoire swap du système hôte sans le savoir:  voilà pourquoi sous montée en charge il arrive que des serveurs virtuels comme VMWare.
J’espère que cet article vous aidera et n’hésitez pas à poster vos commentaires.

Share and Enjoy
Tinyurl for this post

Your email address will not be published. Required fields are marked *

*

IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 2 + 11 ?
Please leave these two fields as-is: