CR du séminaire SpringSource « Expert Tomcat » [2/2]

Suite du premier article consacré au séminaire « Expert Tomcat », au menu : configuration avancée et une présentation de SpringSource tc Server.

Configurer Tomcat dans une optique de performances

Selon Filip Hanik, Tomcat est en fait déjà prêt pour la production et les vrais gains que l’on peut obtenir concernent l’amélioration des applicatifs. On peut tout de même jouer sur certains paramètres qui sont décrits ci-dessous.

Choisir son connecteur

On aborde ici une partie complexe : choisir le connecteur nécessite de connaitre à la fois l’équilibreur de charge utilisé et la nature des échanges réseaux.

Dans tous les cas, on peut simplement utiliser le connecteur BIO (Blocking IO) : c’est le plus mature, gage de stabilité et particulièrement bien adapté au contenu dynamique qui est bloquant, cependant pour tenir une grande charge il faudra monter la valeur du maxThread, ce qui est coûteux en termes de CPU et de mémoire.

En revanche, si le contenu est majoritairement statique, les deux connecteurs APR et NIO offrent de meilleures performances. Ils sont capables de servir les ressources statiques de manière non bloquante, il est donc possible de réutiliser un thread pour plusieurs connexions et donc mieux monter en charge. Le choix entre ces deux connecteurs se fera ensuite sur ces critères :

  • APR est écrit en C et doit donc être recompilé, mais c’est le plus rapide pour faire du SSL puisqu’il repose sur OpenSSL et non JSSE.
  • NIO est écrit entièrement en Java, cependant c’est le plus récent (un an) et ne bénéficie pas du même degré de stabilisation.

Si on utilise un frontal Web pour servir les ressources statiques, on utilisera de préférence le connecteur BIO, la question se pose donc dans le cas où Tomcat est utilisé seul.

Gérer les traces

Il est conseillé de changer l’implémentation de log proposée par défaut dans Tomcat pour l’implémentation JDK (java.util.Logger) car celle-ci permet de faire de la rotation de fichiers de logs et donc d’éviter de saturer le système de fichiers.

On veillera ensuite à appliquer les conseils qui prévalent pour tout serveur d’application, à savoir : supprimer les logs console et restreindre la verbosité.

Si les logs sont toujours une contention il faut alors mettre en œuvre une implémentation de log asynchrone afin de retarder les écritures sur le disque qui sont extrêmement coûteuses, tout en prévoyant d’augmenter la RAM en conséquence puisque les traces y sont bufferisées.

Présentation de tc Server

Ce séminaire a aussi été l’occasion pour SpringSource de présenter plus en détail son nouveau produit tc Server construit autour de Tomcat, alors en quoi consiste un « Tomcat d’Entreprise » ?

Tc Server apporte la notion de groupe de serveurs distribués, on peut ainsi démarrer/arrêter les différentes instances, ainsi que de gérer des déploiements à distance. Le tout est administré via une console Web qui permet d’avoir une vue d’ensemble sur la flotte de serveurs et de déclencher ou programmer les différentes opérations. Ce genre de fonctionnalités était pour l’instant réservé à des produits commerciaux tel WebSphere Network Deployment, et il s’agit d’outils indispensables dès lors que l’on opère sur un grand parc applicatif.

Tc Server propose en outre une panoplie de diagnostics et la remontée d’alertes sur la santé d’une instance, ce qui nous a été démontré durant la session. Nous avons par exemple pu vérifier qu’une alerte était remontée lorsque le temps d’une requête en base dépassait un certain seuil ou lorsque le temps de réponse du serveur était trop bas.

Plus d’informations sur le site de SpringSource : http://www.springsource.com/node/897

Conclusion

SpringSource se démarque donc des autres sociétés utilisant l’OpenSource comme business model comme JBoss/RedHat, puisqu’en plus de proposer de la souscription de support il s’agit de vendre un produit plus riche en fonctionnalités que sa version gratuite. Etant fortement présent dans le développement logiciel avec le framework Spring, l’enjeu est donc maintenant de s’attaquer au RUN en proposant un produit moins complexe à mettre en œuvre et basé sur un projet OpenSource jouissant d’une très bonne réputation. A suivre…