Detaillierte Erklärung zur Verwendung von Tomcat Native zur Verbesserung der Tomcat IO-Effizienz

Detaillierte Erklärung zur Verwendung von Tomcat Native zur Verbesserung der Tomcat IO-Effizienz

Einführung

Es gibt viele IO-Typen, vom anfänglichen Block-IO über nicht blockierendes IO bis hin zu IO-Multiplexing und asynchronem IO, um die IO-Leistung schrittweise zu maximieren.

Heute stellen wir vor, wie Sie mit Tomcat Native die Effizienz von Tomcat IO verbessern können.

So stellen Sie eine Verbindung zu Tomcat her

In Tomcat werden Konnektoren verwendet, um die Kommunikation mit externen Clients abzuwickeln. Der Connector wird hauptsächlich verwendet, um Anfragen von externen Clients anzunehmen und sie zur Verarbeitung an die Verarbeitungs-Engine zu übertragen.

Es gibt zwei Arten von Konnektoren in Tomcat. Einer ist der HTTP-Anschluss und der andere ist der AJP-Anschluss.

Der HTTP-Connector sollte für jeden leicht verständlich sein. Es handelt sich auch um den von Tomcat verwendeten Standardconnector.

Es gibt auch einen Connector namens AJP, der hauptsächlich zur Kommunikation mit Webservern verwendet wird. Da das AJP-Protokoll schneller als HTTP ist, kann AJP neben der Kommunikation mit anderen Webservern auch zum Erstellen eines Tomcat-Clusters verwendet werden.

Beide Methoden unterstützen 4 Protokolle, nämlich BIO, NIO, NIO2 und APR.

#Die folgenden vier Connector-Implementierungen verarbeiten alle direkt HTTP-Anfragen von Clients org.apache.coyote.http11.Http11Protocol: Ein Connector, der das HTTP/1.1-Protokoll unterstützt.

org.apache.coyote.http11.Http11NioProtocol: Ein Connector, der das HTTP/1.1-Protokoll + neue IO unterstützt.

org.apache.coyote.http11.Http11Nio2Protocol: Ein Connector, der das HTTP/1.1-Protokoll + New IO2 unterstützt.

org.apache.coyote.http11.Http11AprProtocol : Ein Connector, der die APR-Technologie (Apache Portable Runtime) verwendet und Native


#Die folgenden vier Implementierungsmethoden beziehen sich auf den Webserver org.apache.coyote.ajp.AjpProtocol: Verwenden Sie den AJP-Protokollconnector, um die Kommunikation mit dem Webserver (z. B. Apache httpd) zu erreichen. org.apache.coyote.ajp.AjpNioProtocol: SJP-Protokoll + Neues IO

org.apache.coyote.ajp.AjpNio2Protocol: SJP-Protokoll + Neues IO2

org.apache.coyote.ajp.AjpAprProtokoll: AJP + APR

Lassen Sie uns über ihre Unterschiede sprechen. BIO ist Block-IO, die grundlegendste IO-Methode. Wir konfigurieren es wie folgt:

<Anschlussport="8080" 
Protokoll="HTTP/1.1"
 
maxThreads="150" 
VerbindungsTimeout="20000" 
UmleitungsPort = ”8443” />

Tomcat-Versionen unter 7 laufen standardmäßig im Bio-Modus. Seit Tomcat 8.5 hat Tomcat die Unterstützung für BIO entfernt.

New IO ist eine IO-Methode, die auf dem Paket java.nio und seinen Unterpaketen basiert. Es verfügt über einen nicht blockierenden IO-Modus und hat eine effizientere Betriebseffizienz als herkömmliches BIO.

Wir konfigurieren New IO wie folgt:

<Connector-Port="8080" Protokoll="org.apache.coyote.http11.Http11NioProtocol"
VerbindungsTimeout="20000"
UmleitungsPort="8443" />

Was ist der Unterschied zwischen New IO und New IO2?

New IO2 ist die in Tomcat8 eingeführte IO-Methode. Wir können sie wie folgt konfigurieren:

<Connector-Port="8080" Protokoll="org.apache.coyote.http11.Http11Nio2Protocol"
VerbindungsTimeout="20000"
UmleitungsPort="8443" />

Die APR-Methode ist fortgeschritten, und dies ist die Hauptfunktion von Tomcat Native, die wir heute erklären werden.

APR und Tomcat Native

Der vollständige Name von apr lautet Apache Portable Runtime. Dabei handelt es sich um eine äußerst portable Bibliothek und den Kern von Apache HTTP Server 2.x. APR hat viele Einsatzmöglichkeiten, darunter den Zugriff auf IO-Funktionen auf hoher Ebene (wie Sendfile, Epoll und OpenSSL), Funktionen auf Betriebssystemebene (Generierung von Zufallszahlen, Systemstatus usw.) und die native Prozessverarbeitung (gemeinsam genutzter Speicher, NT-Pipes und Unix-Sockets).

Tomcat kann die zentrale dynamische Linkbibliothek des Apache-HTTP-Servers in Form von JNI aufrufen, um Dateilese- oder Netzwerkübertragungsvorgänge abzuwickeln, wodurch die Verarbeitungsleistung von Tomcat für statische Dateien erheblich verbessert wird.

Durch die Verwendung von APR können wir die folgenden Funktionen erhalten:

  • Nicht blockierende E/A und Anforderungsverbindungswartung.
  • Unterstützt OpenSSL und TLS/SSL.

Tomcat Native ist eine Bibliothek, die Tomcat die Verwendung von APR ermöglicht.

Daher ist die Installation der APR-Bibliothek, von OpenSSL und JDK Voraussetzung für die Verwendung von Tomcat Native.

Wir können apr und openssl folgendermaßen installieren:

Debian-basiertes Linux-System:

apt-get installiere libapr1.0-dev libssl-dev

RPM-basierte Linux-Systeme:

yum installiere Apr-Devel OpenSSL-Devel

Unter Windows wird tcnative in Form einer DLL bereitgestellt und wir können es direkt herunterladen und verwenden.

Aufgrund der unterschiedlichen Plattformen muss tcnative unter Linux jedoch selbst kompiliert werden.

Im Allgemeinen finden wir das Quellpaket von tcnative in bin/tomcat-native.tar.gz. Entpacken Sie es.

Führen Sie zuerst den Konfigurationsbefehl aus:

./configure --with-apr=/usr/bin/apr-1-config \
  --with-java-home=/home/jfclere/JAVA/jdk1.7.0_80/ \
  --mit-ssl=ja \
  --prefix=$CATALINA_HOME

Führen Sie dann den Make-Vorgang aus:

machen && machen installieren

Die generierten Bibliotheksdateien werden in $CATALINA_HOME/lib abgelegt.

Verwenden von APR in Tomcat

Nach der Installation von tcnative können wir APR in Tomcat verwenden.

Prüfen Sie zunächst, ob in conf/server.xml folgende Konfiguration vorhanden ist:

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

Dann müssen wir $CATALINA_HOME/bin/setenv.sh ändern, um die tc-native Lib-Datei zu LD_LIBRARY_PATH hinzuzufügen.

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
exportiere LD_LIBRARY_PATH

Fügen Sie abschließend die APR-Verbindung hinzu:

<Connector-Port="8080" Protokoll="org.apache.coyote.http11.Http11AprProtocol"
VerbindungsTimeout="20000"
UmleitungsPort="8443" />

Führen Sie es einfach aus.

Aus dem Protokoll können wir Folgendes entnehmen:

org.apache.catalina.core.AprLifecycleListener init

INFO: APR-basierte Apache Tomcat Native-Bibliothek 1.xy geladen

org.apache.catalina.core.AprLifecycleListener init

INFO: APR-Funktionen: IPv6 [true], sendfile [true], Accept-Filter [false], Random [true].

org.apache.coyote.http11.Http11AprProtocol init

Dies zeigt an, dass APR installiert wurde und verwendet wird.

Dies ist das Ende dieses Artikels über die Verwendung von Tomcat Native zur Verbesserung der Tomcat-IO-Effizienz. Weitere Informationen zur Verwendung von Tomcat Native zur Verbesserung der Tomcat-IO-Effizienz finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Tutorial zur Installation und Konfiguration von Tomcat im nativen APR-Modus
  • Detaillierte Erklärung der Serveroptionen von Tomcat
  • Tomcat-Startfehler: Lösung für java.util.zip.ZipException
  • So legen Sie die BIO-, NIO- und APR-Modi von Tomcat auf einem Linux-Server fest
  • Tomcat implementiert Sitzungsfreigabe (Sitzungsreplikation)

<<:  Detaillierte Erläuterung des Replikationskonfigurationsbeispiels zwischen MySQL-Containern

>>:  Welche Regeln gelten für den Kontext in JavaScript-Funktionen?

Artikel empfehlen

Detaillierte Erklärung der Set-Datenstruktur von JavaScript

Inhaltsverzeichnis 1. Was ist Set 2. Konstruktor ...

Lösung für den Fehler bei der Verbindung mit MySQL in Docker

Szenario: Nach der Installation der neuesten Vers...

So verwenden Sie HTML+CSS zum Erstellen einer TG-Vision-Homepage

Dieses Mal verwenden wir HTML+CSS-Layout, um eine...

Detaillierte Analyse der Kompilierung und Installation von vsFTP 3.0.3

Details zur Sicherheitsanfälligkeit VSFTP ist ein...

5 Befehle zur Verwendung des Rechners in der Linux-Befehlszeile

Hallo zusammen, ich bin Liang Xu. Bei der Verwend...

Eine elegantere Methode zur Fehlerbehandlung in JavaScript async await

Inhaltsverzeichnis Hintergrund Warum Fehlerbehand...

Detaillierte Erklärung von Softlinks und Hardlinks in Linux

Inhaltsverzeichnis 1. Grundlegende Speicherung vo...

JavaScript implementiert die H5-Goldmünzenfunktion (Beispielcode)

Heute habe ich eine Aktivität für einen roten Ums...