Tomcat ist oft die Standardentwicklungsumgebung für JavaWeb-Praktiker, aber die Standardkonfiguration von Tomcat als Produktionsumgebung, insbesondere die Konfiguration von Speicher und Threads, ist standardmäßig sehr niedrig und kann leicht zu einem Leistungsengpass führen, Tomcat Es gibt noch viele Funktionen, die verbessert werden können. Im Folgenden wird die Tomcat-Optimierung vorgestellt, die in Speicher, Thread und E/A unterteilt werden kann.
Tomcat ist oft die Standardentwicklungsumgebung für JavaWeb-Praktiker, aber die Standardkonfiguration von Tomcat als Produktionsumgebung, insbesondere die Konfiguration von Speicher und Threads, ist standardmäßig sehr niedrig und kann leicht zu einem Leistungsengpass führen.
Glücklicherweise gibt es bei Tomcat noch viel Raum für Verbesserungen. Im Folgenden wird die Tomcat-Optimierung vorgestellt, die in Speicher, Threads und E/A unterteilt werden kann.
catalina.bat unter Windows
catalina.sh unter Linux wie:
JAVA_OPTS='-Xms256m -Xmx512m'
-Xms
-Xmx
maxThreads="X" bedeutet, dass bis zu X Verbindungen gleichzeitig verarbeitet werden
minSpareThreads="X" X Verbindungen initialisieren
maxSpareThreads="X" bedeutet, dass, wenn es höchstens X Threads geben kann, einmal mehr als X, die Threads geschlossen werden, die nicht mehr benötigt werden
acceptCount="X" Wenn die Anzahl der gleichzeitig verbundenen Personen maxThreads erreicht, können Sie sich weiterhin in die Warteschlange stellen, und die Warteschlangengröße beträgt X. Wenn sie X überschreitet, wird sie nicht verarbeitet
1: Synchrones Blockieren von IO (JAVA BIO) Synchronisation und Blockierung. Der Serverimplementierungsmodus besteht aus einer Verbindung und einem Thread (es ist beängstigend, darüber nachzudenken, Threads sind sehr wertvolle Ressourcen). Natürlich kann dies durch den Thread-Pool-Mechanismus verbessert werden.
2: JAVA NIO: Es ist in synchrones nicht blockierendes IO, asynchrones blockierendes IO und BIO unterteilt. Der größte Unterschied besteht darin, dass ein Thread für die Verarbeitung mehrerer Verbindungen wiederverwendet werden kann
3: Asynchrones nicht blockierendes IO (Java NIO2 wird auch als AIO bezeichnet) ist der zugrunde liegende Unterschied des Betriebssystems. Es kann mit der Expresszustellung verglichen werden Besuchen Sie die offizielle Website, um zu überprüfen, ob die Expresslieferung zugestellt wurde. Wenn Sie ankommen (vielleicht mehrmals), können Sie die Expresssendung selbst abholen. AIO bedeutet, dass der Kurier die Ware an Ihre Haustür liefert (Sie müssen nicht bezahlen). Aufmerksamkeit auf den Fortschritt des Express).Die BIO-Methode eignet sich für Architekturen mit einer relativ kleinen und festen Anzahl von Verbindungen. Diese Methode stellt relativ hohe Anforderungen an Serverressourcen und die Parallelität ist auf Anwendungen beschränkt. Sie war die einzige Wahl vor JDK1.4, aber das Programm ist intuitiv , einfach und leicht zu verstehen.
Die NIO-Methode eignet sich für Architekturen mit einer großen Anzahl von Verbindungen und relativ kurzen Verbindungen (leichte Vorgänge), z. B. für Chat-Server. Die Parallelität ist auf Anwendungen beschränkt und die Programmierung beginnt mit der Unterstützung.
Die AIO-Methode wird in Architekturen mit einer großen Anzahl von Verbindungen und relativ langen Verbindungen (schweren Vorgängen) verwendet, z. B. bei Fotoalbum-Servern. Sie ruft das Betriebssystem vollständig auf, um an gleichzeitigen Vorgängen teilzunehmen. Die Programmierung ist relativ kompliziert Unterstütze es.
In server.xml
Realisieren Sie IO-Switching für Tomcat.
APR是从操作系统级别来解决异步的IO问题,大幅度的提高性能. (http://apr.apache.org/).
In einer Produktionsumgebung, insbesondere wenn Tomcat direkt als WEB-Server verwendet wird, sollte Tomcat Native verwendet werden, um die Leistung zu verbessern. Ohne APR sind im Grunde 300 Threads bald voll und müssen nach dem Hinzufügen von APR warten. Die Anzahl der gleichzeitigen Threads ist erheblich gesunken, von ursprünglich 300 auf nur noch ein paar Dutzend, und neue Anfragen werden ohne Blockierung eingehen.
Bei Tests in einer LAN-Umgebung wurden sogar 400 gleichzeitige Anfragen gleichzeitig verarbeitet/übertragen. In einer realen Internetumgebung beträgt die Seitenverarbeitungszeit jedoch nur weniger als 0,1 % und die meiste Zeit wird für die Seitenübertragung verwendet Wenn APR nicht verwendet wird, kann ein Thread jeweils nur einen Benutzer verarbeiten, was unweigerlich zu einer Blockierung führt. Daher ist es unbedingt erforderlich, apr in einer Produktionsumgebung zu verwenden.
Installieren Sie die Apache Tomcat Native Library und unterstützen Sie sie beim direkten Start. Informationen zu spezifischen Installationsmethoden finden Sie in anderen Blogs und Artikeln Codeprobleme und Tomcat-Optimierung Auf dieser Ebene können die meisten Leistungsanforderungen erfüllt werden.
最后一句话"再牛B的服务器,也顶不住一个傻B的代码".优化的前提条件是良好的代码质量和设计.
Das obige ist der detaillierte Inhalt vonAnalysieren Sie N Möglichkeiten zur Optimierung der Tomcat-Leistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!