Bonjour,
Quelques précisions :
Sur le monitoring
Il faut forcement observer quelque chose quelque part lorsqu’on fait des tests de charges :
- Quelque chose : cpu, disk, JVM, Tomcat / SGBD… jusqu’à Simplicité back et UI
- Quelque part : depuis un serveur externe à Tomcat/SGBD pour éviter de consommer sa CPU, ou en utilisant des sondes locales pour éviter les I/O distants
Le monitoring Simplicité est basé sur des sondes actives par cron (qui vont faire des snapshots régulièrement de la mémoire, de la JVM, du cache, des sessions, des accès SQL, etc.) et persistantes en base (dans la table m_log utilisée pour afficher les métriques), donc cela perturbera un peu les performances et la volumétrie en base.
Le monitoring front UI peut également être activé pour voir sur le navigateur la répartition interne des temps (call xhr/ajax vs. temps de fabrication du formulaire HTML).
On peut donc tout voir avec d’autres outils/agents, mais il faut nécessairement activer le monitoring Simplicité pour mesurer ses composants internes (cache d’objets métier, accès sql system ou user, type des threads tomcat ou simplicité, …).
Idem sur vos objets/traitements spécifiques, vous pouvez ajouter des traces (en créant des Log Events pour tracer ou persister des informations à analyser dans m_log).
Sur le GC dynamique/full Simplicité :
Cette tache Cron libère la mémoire des instances d’objet plus utilisées (aucun accès CRUD depuis un certain temps sauf cas particulier comme XMLSupervisor pour les imports longs, les sondes AppLogger, les objets singletons system…) :
- Toutes les 15min : vide les données volatiles (pagination courante en mémoire)
- Toutes les 30min : vide les instances inutilisées des sessions
Si une session redemande une instance d’objet après 30 minutes d’inactivité, Simplicité va recloner une instance en mémoire d’après le cache de toutes les définitions d’objet, ce qui reste très rapide).
Si vous faites des tests en charges avec des accès CRUD en masse, les instances d’objet par session ne seront jamais dans ce cas et resteront en mémoire. Il n’y a rien à faire pour des usages UI.
Si vous avez des traitements longs (en calcul sans accès CRUD) sur certaines instances back ou des singletons à ne jamais détruire pour optimiser les perfs vous pouvez désactiver son GC via ObjectDB.enableGC(false)
dans le postLoad. L’objet ne sera alors jamais détruit dans la session, il ne sera détruit que sur ObjectDB.destroy()
explicite ou au logout / invalidateSession tomcat).