Réglages Tomcat

Last modified by Aurelie Bertrand on 2024/01/09 12:02


Allouer plus de mémoire à Tomcat

Sous Linux

  1. Éditez le fichier suivant :
sudo vi /etc/default/tomcat9
  1. Remplacez la variable JAVA_OPTS existante par :
JAVA_OPTS="-Djava.awt.headless=true -XX:+UseShenandoahGC -Xms6G -Xmx6G -Djava.security.egd=file:/dev/urandom -DPROP_MAX_CONCURRENT_TOTAL=5000 -DPROP_MAX_CONCURRENT_CON_PER_HOST=5000"
  1.  Changez le paramètre 6G en fonction de la capacité de la machine en laissant au minimum 2G pour l'OS.
    Dans l'exemple ci-dessus, la machine dispose de 8G de RAM.

 💡 Il est recommandé d'utiliser la même valeur pour Xms et Xmx. 

Sous Windows

  1. Allez dans le répertoire d’installation de Tomcat9 puis dans le répertoire bin et lancez tomcat9w.exe.
  2. Ouvrez l’onglet Java et modifiez les champs Initial memory pool (Xms) et Maximum memory pool (Xmx) en MB. Dans cet exemple, 3000 MB. Renseignez la même valeur dans les deux champs.
    Mémoire_Tomcat

Important : Sur un Windows 64 bits il n'y a pas de limite autre que la mémoire physique de votre ordinateur. Si La valeur est trop haute, alors Tomcat ne démarrera pas.

Note pour Windows 32 bits : Si vous avez une configuration 32 bits (machine/OS), ou si vous avez déployé la version 32 bits de DigDash enterpise sur votre machine 64 bits, alors vous êtes limité dans la quantité de mémoire que vous pouvez allouer à Tomcat. La limite dans ce cas est connue pour être approximativement 1,5Go. Cela dépend notamment de la fragmentation de la mémoire à cet instant. Nos tests montrent en général que nous pouvons allouer 1,4Go sur un Windows 32 bits. Pour cette raison, nous recommandons une combinaison machine/OS 64 bits.

Changer les ports réseau Tomcat

Fichier modifié : server.xml

Si un des ports nécessaires à Tomcat est déjà utilisé par un autre processus, alors il ne se lancera pas. Il est nécessaire de vérifier la disponibilité des ports et si besoin de reconfigurer Tomcat. Par défaut les 3 ports suivants sont configurés : 8005, 8080 et 8009. Pour les modifier :

  1. Ouvrez le répertoire d’installation de Tomcat9 puis éditer le fichier server.xml
  2. Chercher et remplacer les valeurs des ports 8005, 8080 et 8009 par des numéros de port disponibles sur le système

Changer la durée de vie des sessions inactives (timeout)

Fichier modifié : web.xml (répertoire d’installation de Tomcat9)

Trouvez les lignes suivantes dans le fichier :

<session-config>
   <session-timeout>30</session-timeout>
</session-config>

Changez la valeur pour modifier la durée de vie en minutes d'une session inactive (timeout). Par défaut le timeout est de 30 minutes.

Changer le nombre maximum de requêtes simultanées

Fichier modifié : server.xml

Par défaut Tomcat n’acceptera pas plus de 200 requêtes simultanées. Ce paramétrage peut se révéler limitant dans le cas d’un déploiement à un grand nombre d’utilisateurs (plusieurs milliers ou millions), ou lors d’un bench de performance (ex. jmeter) qui exécute des centaines ou des milliers de requêtes simultanées.

Pour augmenter cette limite, il faut ajouter un attribut maxthreads dans l’élément Connector correspondant au connecteur utilisé.

Exemple lorsque le connecteur utilisé est http (il n’y a pas d’Apache en front-end) :

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" maxthreads="400" redirectPort="8443" maxPostSize="-1" URIEncoding="UTF-8" ></Connector>

Exemple lorsque le connecteur utilisé est AJP (il y a un Apache en front-end) :

<Connector port="8009" protocol="AJP/1.3" maxthreads="400" redirectPort="8443" maxPostSize="-1" URIEncoding="UTF-8" ></Connector>

Activer la compression HTTP

Fichier modifié : server.xml

La compression HTTP permet de diminuer la consommation de la bande passante du réseau en compressant les réponses HTTP. Par défaut cette option n’est pas activée dans Tomcat, même si tous les navigateurs modernes la supportent.

Cette option permet d’économiser parfois jusqu’à 90 % la bande passante sur certains types de fichiers : HTML, Javascript, CSS. En consommant peu de CPU sur le serveur et le client.

Important : Cette option ne fonctionne que si Tomcat est utilisé directement en serveur front-end via le connecteur HTTP/1.1. S’il y a un Apache httpd en front-end, alors il faudra activer l’option équivalente dans Apache httpd lui-même (voir la documentation directement sur le site Apache httpd).
La compression HTTP n’est pas supportée sur le connecteur AJP, ni sur aucun autre connecteur que HTTP(S)/1.1.

Dans le fichier server.xml ajoutez les attributs compression="on" et compressionMinSize="40000" sur le connecteur HTTP/1.1:

Exemple :

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxPostSize="-1" URIEncoding="UTF-8" compression="on" compressionMinSize="40000"></Connector>

L’attribut compressionMinSize définit une taille minimale de réponse (en octets) au dessous de laquelle la compression n’est pas utilisée. Il est conseillé de spécifier cet attribut à une valeur suffisante pour ne pas compresser des fichiers déjà très petits (icônes PNG…).

Note : Ce réglage n’a pas d’incidence si un navigateur utilisé ne supporte pas la compression HTTP. Tomcat décidera alors de ne pas compresser les réponses HTTP pour ce navigateur.