Comment le niveau de débogage (0-99) dans le fichier Tomcat server.xml affecte-t-il la vitesse?
Question
Le fichier server.xml qui contrôle le démarrage du conteneur de servlets Apache Tomcat contient un attribut de débogage pour presque tous les composants principaux. L'attribut debug est plus ou moins détaillé selon le nombre que vous lui donnez, zéro étant le moins important et 99 le plus détaillé. Comment le niveau de débogage affecte-t-il la vitesse de Tomcat lors de la maintenance d'un grand nombre d'utilisateurs? Je suppose que zéro est rapide et 99 est relativement plus lent, mais est-ce vrai? Si aucune erreur n'est générée, est-ce important?
La solution
Une journalisation poussée prend beaucoup de temps. C’est pourquoi il est si important de mettre
if (log.isDebugEnabled())
log.debug(bla_bla_bla);
donc je dirais que définir votre serveur de production sur verbose affecterait sérieusement les performances. Je suppose que c'est un serveur de production dont vous parlez puisque vous dites qu'il doit desservir un grand nombre d'utilisateurs.
Autres conseils
La journalisation n'est pas seulement responsable de vous donner des erreurs, mais également de suivre ce qui se passe. Dans certains cas, le code ne peut pas être exécuté dans un débogueur. La consignation est votre seule option.
C’est pourquoi la sortie de la journalisation peut être extrêmement détaillée. Et je le
Si vous n'avez pas besoin de vous connecter à Tomcat lui-même, ne l'activez pas sur aucun de ses composants. En règle générale, vous souhaiterez modifier le niveau de journalisation de Tomcat si vous suspectez un bogue dans votre configuration ou dans Tomcat lui-même.
Pour vos propres applications, mesurez le coût de la journalisation à l'aide d'un profileur ou de quelques tests de contrainte. Quels que soient vos résultats, je vous déconseille d'exécuter une application avec un paramètre de niveau de log élevé dans un environnement de production. Mon projet actuel dépose environ un mégaoctet par requête dans les paramètres TRACE, seulement trois à quatre lignes sur INFO et rien sur WARNING (si tout se passe bien :-). Je recommande pas plus que la journalisation la plus nécessaire. Votre application doit simplement signaler le démarrage, l’arrêt et l’échec et, au plus, une ligne par demande.