URL: https://linuxfr.org/forums/general-general/posts/tomcat-application-qui-devient-lente-sans-raison-apparente Title: Tomcat - Application qui devient lente sans raison apparente Authors: kortex Date: 2021年11月15日T08:19:06+01:00 License: CC By-SA Tags: java, openjdk, jdk, tomcat et ubuntu Score: 2 Bonjour, Je me permets de vous solliciter pour un problème avec Tomcat. Petites précisions de taille des fois que mes questions soient stupides : - je viens de commence un nouvel emploi (2 semaines) - ma nouvelle entreprise utilise Tomcat - je n'ai jamais travaillé sur Tomcat auparavant - ce sont sûrement des VMs mais je n'ai absolument pas la main sur la partie hyperviseur (les machines nous sont fournies par des partenaires) Nous avons une application hébergée sur 3 serveurs. 2 serveurs qui n'ont jamais le soucis : - OS : Ubuntu 18.04 LTS - Tomcat : 8.5.39 ; source = dépôts Ubuntu - JDK : openjdk-8 ; 8u292 ; source = dépôts Ubuntu Le 3ème serveur - celui qui a un potentiel soucis : - OS : Ubuntu 20.04 LTS - Tomcat : 9.0.31 ; source = dépôts Ubuntu - JDK : openjdk-8 ; 8u282 ; source = dépôts Ubuntu Description du soucis : après quelques jours (2 ou 3 jours mais c'est variable) notre application devient super lente. Exemple : si nous faisons un wget depuis le serveur sur http://127.0.0.1:8080/path/to/our/app l'application mets plusieurs secondes à répondre. J'ai regardé plusieurs métriques comme : - utilisation CPU - utilisation mémoire - utilisation réseau - utilisation IO - nombre d'éléments ouverts (lsof) --> RAS : tout est au vert (la machine ne semble pas utilisée). J'ai donc tenté de reproduire le problème dans une VM locale mais je n'y arrive pas... Dans ma VM locale j'ai testé d'améliorer la verbosité des logs de Tomcat en modifiant le fichier /etc/tomcat9/logging.properties pour tout passer à ALL : ``` # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional ALLrmation regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific configuration ALL for Handlers. ############################################################ 1catalina.org.apache.juli.AsyncFileHandler.level = ALL 1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. 1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 2localhost.org.apache.juli.AsyncFileHandler.level = ALL 2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. 2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = org.apache.juli.SystemdFormatter ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler # For example, set the org.apache.catalina.util.LifecycleBase logger to log # each component that extends LifecycleBase changing state: #org.apache.catalina.util.LifecycleBase.level = ALL # To see debug messages in TldLocationsCache, uncomment the following line: #org.apache.jasper.compiler.TldLocationsCache.level = ALL # To see debug messages for HTTP/2 handling, uncomment the following line: #org.apache.coyote.http2.level = ALL # To see debug messages for WebSocket handling, uncomment the following line: #org.apache.tomcat.websocket.level = ALL ``` Mais je n'ai pas l'impression d'attraper plus de logs quand au fonctionnement interne de Tomcat (je ne vois aucune différence entre avant et après en faites)... Nous avons essayé de redémarrer juste notre application mais il n'y a aucun changement : le problème persiste. La seule solution qui fonctionne c'est de redémarrer Tomcat 9. Pour le moment j'ai des idées "à l'aveugle" qui consistent à : 1. Mettre à jour le JDK pour faire le saut 8u282 --> 8u292 2. Mettre à jour toute la VM + restart 3. Installer un Tomcat 9 à la main pour être sur la dernière version Mais avant j'avoue que j'aurais bien aimé avoir un peu plus de logs ou, pourquoi pas, une idée quant à la raison du problème si quelqu'un l'a déjà rencontré :) Je vous remercie d'avance :)

AltStyle によって変換されたページ (->オリジナル) /