Maison > Article > Tutoriel système > Analysez N façons d'optimiser les performances de Tomcat
Tomcat est souvent l'environnement de développement par défaut pour les praticiens JavaWeb, mais la configuration par défaut de Tomcat en tant qu'environnement de production, en particulier la configuration de la mémoire et des threads, est très faible par défaut et peut facilement devenir un goulot d'étranglement en termes de performances. Heureusement, Tomcat. a encore de nombreuses fonctionnalités à améliorer. Ce qui suit présente l'optimisation de Tomcat, qui peut être divisée en mémoire, thread et IO.
Tomcat est souvent l'environnement de développement par défaut pour les praticiens JavaWeb, mais la configuration par défaut de Tomcat en tant qu'environnement de production, en particulier la configuration de la mémoire et des threads, est très faible par défaut et peut facilement devenir un goulot d'étranglement en termes de performances.
Heureusement, Tomcat a encore beaucoup à faire. Vous trouverez ci-dessous une introduction à l'optimisation de Tomcat, qui peut être divisée en mémoire, threads et IO.
catalina.bat sous Windows
catalina.sh sous Linux tel que :
JAVA_OPTS='-Xms256m -Xmx512m'
-Xms
-Xmx
maxThreads="X" signifie traiter jusqu'à X connexions en même temps
minSpareThreads="X" Initialiser les connexions X
maxSpareThreads="X" signifie que s'il peut y avoir au plus X threads, une fois de plus que X, les threads qui ne sont plus nécessaires seront fermés
acceptCount="X" Lorsque le nombre de personnes connectées en même temps atteint maxThreads, vous pouvez toujours faire la queue. La taille de la file d'attente est X. Si elle dépasse X, elle ne sera pas traitée.
2 : JAVA NIO : il est divisé en IO synchrones non bloquantes, IO bloquantes asynchrones et BIO. La plus grande différence est qu'une requête par thread peut être réutilisée pour traiter plusieurs connexions (multiplexage).
3 : IO asynchrone non bloquant (Java NIO2 est également appelé AIO). La principale différence avec NIO est la différence sous-jacente du système d'exploitation. Elle peut être comparée à la livraison express, ce qui signifie qu'après les achats en ligne, vous devez y aller. sur le site officiel pour vérifier si la livraison express a été livrée. Lorsque vous arrivez (peut-être plusieurs fois), vous pouvez récupérer l'express vous-même ; cela signifie que le coursier livrera la marchandise à votre porte (vous n'avez pas besoin de payer) ; attention à l'avancement de l'express).
La méthode BIO convient aux architectures avec un nombre de connexions relativement petit et fixe. Cette méthode a des exigences relativement élevées en ressources serveur, et la concurrence est limitée aux applications. C'était le seul choix avant JDK1.4, mais le programme est intuitif. , simple et facile à comprendre.
La méthode NIO convient aux architectures avec un grand nombre de connexions et des connexions relativement courtes (opérations légères), comme les serveurs de chat. La concurrence est limitée aux applications, et la programmation est compliquée pour la prendre en charge.
La méthode AIO est utilisée dans les architectures avec un grand nombre de connexions et des connexions relativement longues (opérations lourdes), comme les serveurs d'albums photos. Elle appelle entièrement l'OS pour participer à des opérations concurrentes. La programmation est relativement compliquée, et JDK7 commence à le faire. soutenez-le.
Dans server.xml
Réalisez la commutation IO pour Tomcat.
Quatre : APR Big KillerAPR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).APR (Apache Portable Runtime) est une bibliothèque hautement portable, qui constitue le cœur d'Apache HTTP Server 2.x. Elle peut être mieux intégrée à d'autres technologies Web locales et rend généralement Java plus efficace en tant que plate-forme de serveur Web hautes performances. Au lieu de simplement servir de conteneur d'arrière-plan.
Dans un environnement de production, notamment lors de l'utilisation directe de Tomcat comme serveur WEB, Tomcat Native doit être utilisé pour améliorer ses performances, en gros 300 threads seront bientôt pleins, et les futures requêtes devront attendre. le nombre de threads simultanés a considérablement diminué, passant des 300 d'origine à seulement quelques dizaines, et de nouvelles requêtes arriveront sans blocage.
Lors des tests dans un environnement LAN, même 400 requêtes simultanées ont été traitées/transmises en un instant. Cependant, dans un environnement Internet réel, le temps de traitement des pages ne représente que moins de 0,1 %, et la plupart du temps est utilisé pour la transmission des pages. . Si APR n'est pas utilisé, un thread ne peut traiter qu'un seul utilisateur à la fois, ce qui entraînera inévitablement un blocage. Par conséquent, il est très nécessaire d'utiliser apr dans un environnement de production.
Installez la bibliothèque native Apache Tomcat et prenez en charge apr (http://tomcat.apache.org/native-doc/) lorsqu'elle est démarrée directement. Elle est basée sur APR. Pour les méthodes d'installation spécifiques, veuillez vous référer à d'autres blogs et articles de dépannage. problèmes de code et optimisation Tomcat À ce niveau, la plupart des besoins de performances peuvent être satisfaits.
最后一句话"再牛B的服务器,也顶不住一个傻B的代码".优化的前提条件是良好的代码质量和设计.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!