Tomcat fonctionne très bien, même pour les solutions "non professionnelles". Je suis sur mon téléphone mais je fournirai d'excellentes raisons lorsque j'aurai un PC plus tard. Il est très stable si vous le configurez correctement et fonctionne assez bien "en l'état".
UPDATE :
Depuis quelques années, je fais tourner un serveur Tomcat avec environ 25 applications web J2EE de complexité variable. Le serveur est une machine SPARC Dual Core 2.0GHz, 2 Go de RAM et fonctionne sous Solaris. L'administrateur précédent du serveur (qui ne fait plus partie de notre société) n'a rien fait pour reconfigurer l'instance Tomcat par défaut. En conséquence, les performances de certaines de nos applications à forte intensité d'E/S étaient plutôt médiocres en raison des contraintes de mémoire. L'instance par défaut de Tomcat (je crois) n'alloue que 64 Mo de mémoire, ce qui ne demande que des exceptions OutOfMemory (et nous en avons connu pendant un certain temps). Notre département s'est contenté de continuer et a accepté de redémarrer le serveur chaque jour comme une "procédure". Ugh.
Lorsqu'il est parti, j'ai été chargé de configurer notre serveur Tomcat et j'ai passé un certain temps à chercher comment le configurer correctement pour notre environnement. J'ai découvert que j'avais seulement besoin d'ajouter quelques nouveaux arguments au script script afin de transformer Tomcat en un environnement très stable et très rapide. La ligne suivante existe dans catalina.sh (autour de la ligne 112 sur une installation par défaut de Tomcat 6.0.18) :
CATALINA_OPTS=" $CATALINA_OPTS"
J'ai modifié la ligne pour qu'elle se lise comme suit :
CATALINA_OPTS="-server $CATALINA_OPTS -Xms512m -Xmx2048m -XX:MaxPermSize=512m -Dcom.sun.management.jmxremote"
Explication :
- -server : Cela permet au conteneur d'agir comme un serveur dédié.
- -Xms512m : Fixe la taille initiale du tas à 512 Mo (1/4 de la quantité de mémoire du serveur). Vous pouvez jouer avec cette valeur, puisque l'opération de changement de la taille du tas a une pénalité de performance, donc définissez-la à une valeur qui sera dans la gamme de votre utilisation normale.
- -Xmx2048 : Fixe la taille maximale du tas à 2GB (la quantité de mémoire sur le serveur). Cela devrait être maximisé si votre machine est un serveur dédié pour obtenir le meilleur de votre environnement, j'ai trouvé.
- -XX:MaxPermSize=512m : Génération permanente maximale. J'ai fixé cette valeur à la taille initiale du tas.
- -Dcom.sun.management.jmxremote : J'ajoute ceci pour activer ce fichier jar par les applications sur le serveur. Je l'utilise pour pouvoir exécuter le Sonde Lambda que j'aime beaucoup pour l'analyse de mon serveur.
Avec cette ligne supplémentaire, notre serveur est passé de 1 à 2 fois par jour pendant une journée chargée à une connexion stable sans redémarrage pendant les 20 derniers jours depuis que j'ai mis en place cette configuration.