Nous exploitons de nombreux serveurs Tomcat et avons observé que les garbage collections (GC) complètes sont souvent effectuées toutes les heures, en particulier lorsque l'utilisation de la mémoire est relativement faible. L'heure précise semble être relative à l'heure de démarrage du serveur d'application ; si un serveur est démarré à 01:13, une GC complète est effectuée à 02:13, et la prochaine GC complète aura lieu à 03:13. Je n'ai pas pu trouver de documentation expliquant ce comportement.
C'est un problème car un pool de serveurs démarrés simultanément ont tous tendance à faire des GC complets à peu près en même temps. Si le retard de GC est suffisamment long pour qu'un équilibreur de charge marque un serveur comme étant hors service, toute l'application peut être mise hors service pendant un certain temps. Il serait préférable que les GC complètes soient réparties sur une période de sorte que deux serveurs ne fassent pas une GC complète en même temps, mais je ne trouve aucun moyen de contrôler ce comportement.
Quelqu'un d'autre a-t-il constaté ce comportement ? Existe-t-il un moyen d'influer sur le moment où ces CG complètes "normales" se produisent ?