...
Tentative d'optimisation du nettoyage de tickets via MongoDB
Cf le parapgraphe suivant, on a préféré finalement ne pas procéder à ces paramétrages.
Pour laisser MongoDB s'occuper du nettoyage des tickets, on désactive simplement le nettoyage périodique des tickets par CAS ainsi :
...
En positionnant le expireAfterSeconds à 0 seconde pour ne plus utiliser le DefaultTicketRegistryCleaner qui prend en compte le lastTimeUsed du TGT (d'où l'obligation de décoder les tickets), la date de dernier usage n'est plus prise en compte, et le TGT expire systématiquement 8 heures après sa création (même si il est régulièrement utilisé) : la session CAS a donc alors une durée de vie maximale de 8 heures.
Il est dommage que le expireAt ne soit pas mis à jour par CAS à chaque usage du TGT, le comportement n'aurait ainsi pas été changé.
Toujours est-il qu'au Au vue de cette régression, on préfère ici laisser le paramétrage précédent avec le DefaultTicketRegistryCleaner le DefaultTicketRegistryCleaner d'actif, mais on ne lui demande de passer que toutes les heures simplement (plutôt que toutes les 2 minutes) pour économiser un peu de charge serveur ... :
| Bloc de code |
|---|
cas.ticket.registry.cleaner.schedule.repeat-interval=PT1H |
Optimisation
...
MongDB : suppression des index plein texte
Cf le retour de Pascal concernant la consommation CPU de MongoDB via CAS, nous avons supprimé les index plein text et avons ajouté un index simple sur le numéro de ticket de cette façon :
...
En forçant le nom des nouveaux index simples par le nom des index plein texte créés normalement par CAS, CAS n'écrase pas ces index par défaut.
cas.ticket.registry.mongo.update-indexes=false fait également en sorte plus simplement que ces modification sur ces index ne soient pas écrasés.
La bonne solution serait évidemment que la correction soit apportée dans CAS directement.
Quel Ticket Registry en CAS 6.6.9 : Hazelcast Ticket Registry ?
Si le Ticket Registry MongoDB donne satisfcation à l'usage, et nous permet d'abandonner le Ticket Registry Redis maintenant inutilisable en CAS 6.6.9, il nous parait dommageable de ne pas mettre à profit les possibilités d'expiration des documents via TTL proposées nativement par MongoDB. Le Ticket Registry MongoDB pourrait être revu et corrigé.
On peut aussi sléctionner un autre Ticket Registry qui nativement s'occuperait véritablement du nettoyage des tickets sans passer par le DefaultTicketRegistryCleaner dont l'implémentation et le coût sont les même pour tous les Ticket Registry quand celui-ci est actif (cf parapgraphe plus haut dans cette page), à savoir : lecture et décodage de tous les tickets de la base.
A inspecter le code de CAS de cette 6.6.9, un seul Ticket Registry semble répondre à cette exigence, il s'agit de HazelcastTicketRegistry, on voit en effet dans son implémentation la surcharge du ticketRegistryCleaner qui en esulte de la désactivation pure et simple du DefaultTicketRegistryCleaner : cf l'implémentation de la méthode HazelcastTicketRegistryConfiguration.ticketRegistryCleaner()