optimisation des performances de tomcat (principal)

Les paramètres par défaut de tomcat sont formulés pour l'environnement de développement, mais ne conviennent pas à l'environnement de production, en particulier la configuration de la mémoire et des threads. La valeur par défaut est très faible, ce qui peut facilement devenir un goulot d'étranglement des performances.

 

optimisation de la mémoire tomcat

Linux modifier TOMCAT_HOME / bin / catalina.sh, ajouter devant

JAVA_OPTS="-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m -Duser.timezone=Asia/Shanghai"
  
  

les fenêtres modifient TOMCAT_HOME / bin / catalina.bat, ajoutent devant

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m
  
  

La mémoire de tas maximale est de 1024 m, ce qui est encore faible pour le matériel actuel. Lors de la mise en œuvre, elle est toujours optimisée en fonction de la configuration matérielle spécifique de la machine.

 

optimisation des threads tomcat


  
  
  1. < Port du connecteur = "80" protocol = "HTTP / 1.1" maxThreads = "600" minSpareThreads = "100" maxSpareThreads = "500" acceptCount = "700"
  2. connectionTimeout = "20000" redirectPort = "8443" />

maxThreads = "600" /// Nombre maximal de threads
minSpareThreads = "100" /// Nombre de threads créés lors de l'initialisation
maxSpareThreads = "500" /// Une fois que le nombre de threads créés dépasse cette valeur, Tomcat ferme les sockets qui ne sont plus nécessaires Thread.
acceptCount = "700" // Spécifiez le nombre de demandes qui peuvent être placées dans la file d'attente de traitement lorsque tous les threads disponibles pour le traitement des demandes sont utilisés, et les demandes dépassant ce nombre ne seront pas traitées

 

Voici l'optimisation du connecteur http. Si vous utilisez apache et tomcat pour l'équilibrage de charge de cluster et utilisez le protocole ajp pour le transfert de protocole apache et tomcat, vous devez optimiser le connecteur ajp.


  
  
  1. < Port du connecteur = "8009" protocol = "AJP / 1.3" maxThreads = "600" minSpareThreads = "100" maxSpareThreads = "500" acceptCount = "700"
  2. connectionTimeout = "20000" redirectPort = "8443" />

 

Étant donné que tomcat possède plusieurs connecteurs, la configuration des threads tomcat prend également en charge plusieurs connecteurs partageant un pool de threads.

Tout d'abord. Ouvrez /conf/server.xml et ajoutez

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
  
  

Le thread maximum est 500 (le serveur général est suffisant), le nombre minimum de threads inactifs est de 20 et le temps d'inactivité maximum des threads est de 60 secondes.

 

Ensuite, modifiez le nœud <Connecteur ...> et ajoutez l'attribut exécuteur. L'exécuteur est défini sur le nom du pool de threads:

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1"  connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1"  redirectPort="443" />
  
  

Plusieurs connecteurs peuvent partager un pool de threads, de sorte que le connecteur ajp peut également être défini pour utiliser le pool de threads tomcatThreadPool.

 

Désactiver la requête DNS


Lorsque l'application Web souhaite enregistrer les informations du client, elle enregistre également l'adresse IP du client ou recherche le nom de la machine via le serveur de nom de domaine et le convertit en une adresse IP.

La requête DNS doit occuper le réseau et comprend le processus d'obtention de l'IP correspondante à partir de nombreux serveurs très éloignés ou serveurs non fonctionnels, ce qui prendra un certain temps.

Modifiez l'élément Connector dans le fichier server.xml, modifiez la valeur du paramètre enableLookups: enableLookups = "false"

Si vrai, vous pouvez obtenir le nom d'hôte réel du client distant en appelant request.getRemoteHost () pour la requête DNS, s'il est faux, n'effectuez pas de requête DNS, mais renvoyez son adresse IP

 

 

Définir l'heure d'expiration de la session

Spécifiez par paramètres dans conf \ web.xml:


  
  
  1. < session-config >
  2. < session-timeout > 180 </ session-timeout >
  3. </ session-config >
  4. L'unité est en minutes.

 

Le plugin Apr améliore les performances de Tomcat

  Tomcat peut utiliser APR pour fournir une évolutivité et des performances supérieures, et mieux intégrer la technologie de serveur local.

  APR (Apache Portable Runtime) est une bibliothèque hautement portable, qui est le cœur d'Apache HTTP Server 2.x. APR a de nombreuses utilisations, notamment l'accès aux fonctions avancées d'E / S (telles que sendfile, epoll et OpenSSL), les fonctions au niveau du système d'exploitation (génération de nombres aléatoires, état du système, etc.), la gestion des processus locaux (mémoire partagée, canaux NT et sockets UNIX). Ces fonctions peuvent faire de Tomcat un serveur WEB frontal normal, peuvent mieux s'intégrer à d'autres technologies Web locales et rendre Java plus efficace en tant que plate-forme de serveur Web hautes performances plutôt qu'en tant que conteneur d'arrière-plan.

  Dans l'environnement de production, en particulier lorsque vous utilisez directement Tomcat comme serveur Web, vous devez utiliser Tomcat Native pour améliorer ses performances.  

  La meilleure façon de mesurer les avantages de l'APR pour tomcat est d'utiliser un réseau lent (simulant Internet), d'ouvrir le nombre de threads Tomcat au-dessus de 300, puis de simuler un grand nombre de demandes simultanées.
  Si vous n'avez pas d'APR, 300 threads seront utilisés rapidement et les futures requêtes devront attendre. Mais avec APR, le nombre de threads simultanés a chuté de manière significative, du 300 d'origine peut immédiatement chuter à seulement quelques dizaines, de nouvelles demandes arriveront sans blocage.
  Dans l'environnement LAN, même s'il est 400 simultanés, le traitement / transmission est terminé en un instant, mais dans l'environnement Internet réel, le temps de traitement des pages n'est que inférieur à 0,1% et la plupart du temps est utilisé pour la transmission des pages. Si APR n'est pas utilisé, un thread ne peut gérer qu'un seul utilisateur à la fois, ce qui est susceptible de provoquer un blocage. Il est donc très nécessaire d'utiliser apr dans un environnement de production.

Copier le code


  
  
  1. (1) Installer APR natif tomcat
  2. apr-1.3.8.tar.gz est installé dans / usr / local / apr
  3. #tar zxvf apr-1.3.8.tar.gz
  4. #cd avr-1.3.8
  5. #. / configure; make; make install
  6. apr-util-1.3.9.tar.gz est installé dans / usr / local / apr / lib
  7. #tar zxvf apr-util-1.3.9.tar.gz
  8. #cd apr-utile-1.3.9
  9. #. / configure --with-apr = / usr / local / apr ---- with-java-home = JDK; make; make install
  10. #cd apache-tomcat-6.0.20 / bin
  11. #tar zxvf tomcat-native.tar.gz
  12. #cd tomcat-native / jni / native
  13. #. / configure --with-apr = / usr / local / apr; make; make install
  14. (2) Configurer Tomcat pour intégrer APR
  15. Modifiez le shell de démarrage de tomcat (startup.sh), ajoutez des paramètres de démarrage au fichier:
  16. CATALINA_OPTS = "$ CATALINA_OPTS -Djava.library.path = / usr / local / apr / lib"。
  17. (3) Juger de l'installation réussie:
  18. Si vous voyez le journal de démarrage suivant, cela signifie succès.
  19. 2007-4-26 15:34:32 org.apache.coyote.http11.Http11AprProtocol init

Copier le code

 

Reportez-vous à  http://blog.sina.com.cn/s/blog_417b97470100glmi.html

       http://datadig.blog.163.com/blog/static/171229928201082075946726/

Publié 331 articles originaux · 51 éloges · 440 000 visites +

Les paramètres par défaut de tomcat sont formulés pour l'environnement de développement, mais ne conviennent pas à l'environnement de production, en particulier la configuration de la mémoire et des threads. La valeur par défaut est très faible, ce qui peut facilement devenir un goulot d'étranglement des performances.

Je suppose que tu aimes

Origine blog.csdn.net/y41992910/article/details/97638347
conseillé
Classement