2017-09-14 7 views
0

Nous avons remarqué qu'un déploiement d'une nouvelle version d'application dans Tomcat (à l'aide de déploiements parallèles) du processus de déploiement consomme toutes les ressources de processeur disponibles. Cela conduit les temps de réponse de demande de cette application à une valeur inacceptable et signifie un impact de plusieurs minutes par serveur d'application. Existe-t-il un moyen de limiter/limiter/hiérarchiser les ressources consacrées au déploiement de la nouvelle version de l'application afin que l'ancienne version de l'application puisse continuer à répondre aux demandes à un temps de réponse acceptable?Dégradation des performances de Tomcat lors de déploiements parallèles

Nous utilisons Tomcat 8.5.20.

+0

Quel est le comportement si vous n'utilisez pas les déploiements parallèles? Je suppose que vous déployez plusieurs applications à la fois, puisque vous mentionnez le déploiement parallèle - est-ce courant, sera-t-il souvent mis à jour en même temps ou pouvez-vous simplement les séquencer? –

+0

Nous avons juste une application par Tomcat. Notez que Parallel Deployment signifie l'exécution de différentes versions de la même application pour atteindre zéro temps d'arrêt comme décrit dans https://tomcat.apache.org/tomcat-8.5-doc/config/context.html#Parallel_deployment – Stephan

+0

Oups - parler de contexte trompeur . Si j'avais eu une discussion la veille, cela m'a conduit dans une direction différente. Bien que je n'ai jamais utilisé le déploiement parallèle, j'ai été fasciné par la possibilité. Cependant, je travaille généralement avec des équilibreurs de charge pour retirer l'une des machines de l'équilibrage des mises à jour, de sorte que les autres machines prennent le relais. Ou, sur les sites à faible trafic: faites-le. Je vais laisser la réponse aux autres alors. –

Répondre

0

La réponse courte est non.

Tomcat alloue un seul thread au déploiement de l'application dans ce cas. (Vous pouvez configurer Tomcat pour déployer des applications en parallèle pendant le processus de démarrage, mais même là, il y a un seul thread par défaut).

Si vous avez plusieurs cœurs disponibles pour le processus Tomcat, un seul thread ne devrait pas pouvoir consommer tous les CPU disponibles. Tout au plus, il devrait consommer un seul noyau. Cela suggère que le code de démarrage de l'application est multithread. Je suggère d'utiliser un profileur pour voir ce qui se passe en vue de modifier éventuellement le code d'initialisation de l'application. Tomcat pourrait ajouter une option pour contrôler la priorité de thread du thread faisant le déploiement d'application mais je ne connais pas assez l'impact de changer cela pour peser les risques et les avantages.