J’ai une instance en 4.0 patch level P23 (database patch level P23) hébergé au sein d’un SI client
On a remarqué la multiplication de sessions du user public
Création d’une session public toutes les secondes voir 6 sessions par seconde ?
Est-ce lié à la P23 ? ou a des robots ? Comment puis je investiguer ce problème ?
Il faudrait regarder les requetes HTTP GET qui arrivent dans tomcat (le fichier access_log de tomcat/logs).
A mon avis, il y a un accès sans JSESSIONID à une ressource ou une image… qui recrée une session à chaque appel. Ca peut être :
un composant de le page d’accueil du site ou une page souvent accédée avec une URL sans JSESSIONID ou token dans le header/get… pour permettre au back de réutiliser une session existante
ou un health check de monitoring à distance
appel de Webservice sans cookie de session…
Ces sessions sont détruites périodiquement si le timeout de session n’a pas été inhibé, mais ça prend de la mémoire pour rien. Il faudrait vérifier la courbe du heap size dans le monitoring pour voir si le pb est mineur ou sature la mémoire.
Pour tester la première cause, ça peut se regarder en local avec le debugger du navigateur / réseau.
pour regarder si le cookie de session est bien dans chaque appel.
Ben il faut commencer par trouver qui fait ces appels reguliers sur une URL qui n’existe plus depuis des lustres et lui dire de taper sur /health
Ensuite il faudrait upgrader sur la release P24 car on a mis en place des mécanismes de re-use de sessions et/ou d’expiration immédiate des session sur les endpoints “techniques” de ce genre (/io, /api, /health, /git, /maven, …) qui évitent les multiplications de sessions inutiles.
PS: En attendant l’autre approche - qui aurait dû être mise en place dès le début - consiste à faire des appels sur /health en repassant le cookie de session afin de réutiliser la session précédente.
Oui, aucun appel à l’URL /health n’est fait, par défaut, en interne à Simplicité. C’est sans doute un mécanismes de “supervision” externe.
NB: il y a une tâche planifiée par défaut qui s’appelle HealthCheck mais ça n’a rien à voir, celle-ci appelle simplement une méthode Java qui récupère la valeur du param système VERSION