Service.xml Die Konfigurationsdatei Server.xml wird zum Konfigurieren des gesamten Containers verwendet. <Server>-Element: Ist das Stammelement der gesamten Konfigurationsdatei. Stellt den gesamten Catalina-Container dar. Eigentum:
Beispiel: <Serverport="8005" shutdown="HERUNTERFAHREN"> <Connector>-Element: Der Connector ist für den Empfang von Clientanforderungen und das Zurücksenden von Antwortnachrichten an den Client verantwortlich. HTTP-Anschluss: Eigentum:
Beispiel: <Anschluss Port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> AJP-Anschluss: Wird verwendet, um Apache mit Tomcat zu integrieren. Wenn Apache eine dynamische Inhaltsanforderung empfängt, sendet es die Anforderung an die AJP-Anschlusskomponente, die auf der in der Konfiguration angegebenen Portnummer lauscht. Eigentum:
Beispiel: <!—Definieren Sie einen AJP1.3-Connector auf Port 8089--> <Connector-Port = „8089“ enableLookups = „false“ redirectPort = „8443“ Protokoll = „AJP/1.3“ /> <Engine>-Element: Bearbeitet alle Anfragen für einen bestimmten Dienst. Jeder Dienst kann nur ein Engine-Element enthalten, das für den Empfang und die Verarbeitung der von allen Konnektoren dieses Dienstes empfangenen Anfragen, das Zurücksenden von Antworten an die Verbindungen und deren schließliche Anzeige auf dem Client verantwortlich ist. <Engine> muss mindestens ein <Host>-Element haben, und es muss mindestens ein <Host>-Attribut mit einem Namen vorhanden sein, der mit dem von defaultHost angegebenen Namen übereinstimmt. Eigentum:
Beispiel: <Engine-Name="Cataline" Standardhost="localhst"> <Host>-Element: Stellt einen virtuellen Host dar und verarbeitet alle Anfragen für einen bestimmten virtuellen Host Eigentum:
Die Standard-Host-Implementierungsklasse org.apahce.catalina.core.StandardHost unterstützt zusätzliche Eigenschaften:
Beispiel: <Hostname="localhst" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> Konfigurieren Sie den virtuellen Host: <Hostname="xxx" appBase="c:/test"> <Contentpath="" docBase="e:/abe"/> </Hostname> <context>-Element: Eine Webanwendung verarbeitet alle Anforderungen für die aktuelle Webanwendung. Jeder <Kontext> muss einen eindeutigen Kontextpfad verwenden. Eigentum:
Beispiel: <Inhaltspfad=”/abc” docBase=”d:/xyz” reloadable=”true” /> Zusammenfassung der Tomcat-Leistungsoptimierungslösung Stellen Sie sich folgendes Szenario vor: Sie haben eine App mit hervorragendem Layout-Design, den neuesten Funktionen und anderen tollen Features entwickelt. Wenn jedoch die Leistung fehlt, wird die Anwendung von den Kunden abgelehnt, egal wie gut sie ist. Kunden erwarten von ihren Anwendungen stets eine bessere Leistung. Wenn Sie in Ihrem Produkt einen Tomcat-Server verwenden, zeigt Ihnen dieser Artikel mehrere Möglichkeiten zur Verbesserung der Leistung des Tomcat-Servers. Vielen Dank an ITWorld für die Bereitstellung der Ressourcen für diesen Artikel. Nach einigem Nachdenken bin ich zu dem Schluss gekommen, dass der neueste Tomcat im Vergleich zu früheren Versionen eine bessere Leistung und Stabilität bietet. Verwenden Sie daher immer die neueste Tomcat-Version. Dieser Artikel verwendet die folgenden Schritte, um die Leistung des Tomcat-Servers zu verbessern.
Schritt 1 – JVM-Heapspeicher erhöhen Wenn Sie Tomcat verwendet haben, nennt man das einfach „Speicherüberlauf“. Normalerweise tritt dieses Problem in der tatsächlichen Produktionsumgebung auf. Der Grund für dieses Problem ist, dass Tomcat für den Prozess weniger Speicher verwendet. Dieses Problem kann durch Konfigurieren der Tomcat-Konfigurationsdatei (catalina.bat unter Windows oder catalina.sh unter Linux) gelöst werden. Diese Lösung wird durch Erhöhen des Stapelspeichers der JVM erreicht. Mit anderen Worten, die JVM ruft den Garbage Collector normalerweise nicht auf, sodass sich der Server mehr auf die Verarbeitung von Webanforderungen konzentrieren und diese so schnell wie möglich abschließen kann. Um die Datei (catalina.sh) im Ordner „\tomcat server folder\bin\catalina.sh“ zu ändern, finden Sie im Folgenden die Konfigurationsinformationen für diese Datei. JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NeueGröße=512m -XX:MaximaleNeueGröße=512m -XX:PermanenteGröße=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC" -Xms – gibt den zu initialisierenden Stapelspeicher an -Xms – gibt den zu initialisierenden Stapelspeicher an -Xmx – gibt den maximalen Stapelspeicher an Diese Konfigurationsänderungen werden erst wirksam, wenn Sie Ihren Tomcat-Server neu starten. Nachfolgend wird der Umgang mit JRE-Speicherlecks beschrieben. Schritt 2 – JRE-Speicherleck beheben Ein weiterer Hauptgrund für schlechte Leistung sind Speicherlecks, und wie ich bereits sagte: Verwenden Sie für bessere Leistung und Skalierbarkeit immer den neuesten Tomcat-Server. Nun ist dieser Satz wahr geworden. Wenn wir die neueste Tomcat-Version 6.0.26 und höher verwenden, können wir diesen Fehler beheben, da sie einen Listener zum Behandeln von Speicherlecks in JRE und PermGen enthält. Der verwendete Listener ist <Listener-Klassenname="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> Die Konfiguration dieses Listeners finden Sie in der Datei server.xml, die sich im Ordner „Tomcat-Projektordner/conf/server.xml“ befindet. Als nächstes schauen wir uns an, wie die Verbindungseigenschaft „maxThreads“ angepasst wird. Schritt 3 – Thread-Pool-Setup Der Thread-Pool gibt die Anzahl der Web-Anforderungsladungen an, daher sollte dieser Teil für eine bessere Leistung sorgfältig behandelt werden. Dies kann durch Anpassen der Connector-Eigenschaft „maxThreads“ erfolgen. Der Wert von maxThreads sollte auf der Größe des Datenverkehrs basieren. Wenn der Wert zu niedrig ist, gibt es nicht genügend Threads, um alle Anforderungen zu verarbeiten. Die Anforderung wechselt in einen Wartezustand und wird erst verarbeitet, wenn ein Verarbeitungsthread freigegeben wird. Wenn der Wert zu hoch eingestellt ist, dauert der Start von Tomcat länger. Es liegt also an uns, einen korrekten Wert für maxThreads festzulegen. <Connector-Port="8080" Adresse="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" Protokoll="HTTP/1.1" enableLookups="false" redirectPort="8181" acceptCount="100" Verbindungs-Timeout = "20000" Deaktivieren Sie Upload-Timeout = "true" /> In der obigen Konfiguration ist der maxThreads-Wert auf „250“ eingestellt, was die maximale Anzahl gleichzeitiger Anfragen angibt, die vom Server verarbeitet werden können. Wenn nicht angegeben, ist der Standardwert dieser Eigenschaft „200“. Bei allen weiteren gleichzeitigen Anforderungen wird die Fehlermeldung „Verbindung abgelehnt“ angezeigt, bis ein anderer Prozess zur Bearbeitung der Anforderung freigegeben wird. Der Fehler sieht so aus: org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: Alle Threads (250) sind Momentan beschäftigt, warte. Erhöhen Sie maxThreads (250) oder überprüfen Sie den Servlet-Status Wenn die Anwendung den oben genannten Fehler anzeigt, prüfen Sie, ob der oben genannte Fehler durch eine einzelne Anfrage verursacht wird, die zu lange dauert. Der Grund für dieses Problem ist, dass der Prozess manchmal keine anderen Anfragen verarbeitet, wenn die Datenbankverbindung nicht freigegeben wird. Hinweis: Wenn die Anzahl der Anfragen „750“ überschreitet, bedeutet dies nicht, dass der Attributwert „maxThreads“ auf „750“ gesetzt werden muss, sondern dass es besser ist, mehrere Instanzen von „Tomcat Cluster“ zu verwenden. Das heißt, wenn es „1000“ Anfragen gibt, setzen beide Tomcat-Instanzen „maxThreads = 500“, anstatt im Fall einer einzelnen Tomcat-Instanz „maxThreads = 1000“ zu setzen. Meiner Erfahrung nach kann der genaue Wert ermittelt werden, indem die Anwendung in verschiedenen Umgebungen getestet wird. Als Nächstes schauen wir uns an, wie MIME-Typen komprimiert werden. Schritt 4 - Komprimierung Tomcat bietet eine Option zum Aktivieren der Komprimierung, indem Sie diese in der Konfigurationsdatei server.xml festlegen. Die Komprimierung kann in den Connector-Einstellungen wie unten beschrieben erfolgen. <Anschlussport="8080" Protokoll="HTTP/1.1" VerbindungsTimeout="20000" UmleitungsPort="8181" Komprimierung="500" compressableMimeType="text/html,text/xml,text/plain,anwendung/octet-stream" /> In der vorherigen Konfiguration werden Dateien nur komprimiert, wenn ihre Größe größer oder gleich 500 Byte ist. Wenn die Datei beim Erreichen der erforderlichen Größe nicht komprimiert wird, setzen Sie die Eigenschaft „compression=on“. Andernfalls ist die Tomcat-Standardeinstellung „Aus“. Als Nächstes schauen wir uns an, wie die Datenbank optimiert wird. Schritt 5 – Optimierung der Datenbankleistung Die Leistung von Tomcat nimmt ab, während auf die Ausführung von Datenbankabfragen gewartet wird. Die meisten Anwendungen verwenden heutzutage eine relationale Datenbank, die „benannte Abfragen“ enthalten kann. In diesem Fall lädt Tomcat benannte Abfragen standardmäßig beim Start, was die Leistung verbessern kann. Außerdem muss sichergestellt werden, dass alle Datenbankverbindungen ordnungsgemäß geschlossen werden. Es ist auch sehr wichtig, den richtigen Wert für den Datenbankverbindungspool festzulegen. Die Werte, von denen ich spreche, sind die Werte der Attribute „Maximale Leerlaufzahl“ (maxIdle), „Maximale Verbindungsanzahl“ (maxActive) und „Maximale Wartezeit für den Verbindungsaufbau“ (maxWait) des Ressourcenelements. Aufgrund von Konfigurationsabhängigkeiten und Anwendungsanforderungen kann ich in diesem Artikel nicht die richtigen Werte angeben. Den richtigen Wert können Sie durch den Aufruf des Datenbank Performancetests ermitteln. Schritt 6 – Tomcat Native Library Die native Bibliothek von Tomcat basiert auf der Apache Portable Runtime (APR), die Programmierern überlegene Skalierbarkeit und Leistung bietet und dabei hilft, native Servertechnologie in den Produktbetrieb zu integrieren, um optimale Leistung zu erzielen. Installationsanweisungen finden Sie unter Tomcat Native Library – (APR) Installation. Schritt 7 – Andere Optionen Die Optionen sind:
Stellen Sie TOMCAT so ein, dass die GZIP-Komprimierung aktiviert wird Prinzip Einführung HTTP-Komprimierung kann die Geschwindigkeit beim Surfen auf Websites erheblich verbessern. Das Prinzip besteht darin, dass, nachdem der Client die entsprechenden Ressourcen vom Server angefordert hat, die Ressourcendatei vom Server komprimiert und dann an den Client ausgegeben wird. Der Browser des Clients ist für das Dekomprimieren und Surfen verantwortlich. Im Vergleich zum normalen Browsing-Prozess mit HTML, CSS, Javascript und Text können etwa 40 % des Datenverkehrs eingespart werden. Noch wichtiger ist, dass es dynamisch generierte Webseiten komprimieren kann, einschließlich der von CGI, PHP, JSP, ASP, Servlet, SHTML usw. ausgegebenen Seiten, und dass die Komprimierungseffizienz ebenfalls sehr hoch ist. Konfigurationsmethode Tomcat 5.0 und spätere Versionen unterstützen die Komprimierung von Ausgabeinhalten mithilfe des GZIP-Komprimierungsformats. Ändern Sie %TOMCAT_HOME%/conf/server.xml und überarbeiten Sie die Knoten wie folgt: <Anschluss-Port="80" Protokoll="HTTP/1.1" VerbindungsTimeout="20000" UmleitungsPort="8443" Executor="tomcatThreadPool" URIEncoding="utf-8" Komprimierung="ein" KompressionMinSize="50" keineKompressionBenutzerAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /> Wie aus den Eigenschaften der obigen Knoten ersichtlich ist, müssen Sie zur Verwendung der GZIP-Komprimierungsfunktion dem Connector-Knoten die folgenden Eigenschaften hinzufügen
Testmethode Wie testen wir, ob die Komprimierung effektiv ist, nachdem wir die TOMCAT-Komprimierungsfunktion aktiviert haben? Zunächst ermittelt Tomcat anhand der Accept-Kodierung im Browser-Anforderungsheader, ob der Browser Komprimierung unterstützt. Wenn dieser Wert gzip enthält, bedeutet dies, dass der Browser das Durchsuchen von gzip-komprimierten Inhalten unterstützt. Wir können zwei Methoden verwenden, um zu überprüfen, ob die Komprimierung wirksam ist. Sie können über den Browser direkt auf den Server mit aktivierter Komprimierungskonfiguration zugreifen und dann die erfassten Datenpakete über das Paketerfassungstool anzeigen. Wenn viele Inhalte vorhanden sind, die Sie nicht verstehen, bedeutet dies, dass die Komprimierungsfunktion aktiviert wurde. Anfragen durch Programme simulieren Wir verwenden httpclient, um ein einfaches Testprogramm zu schreiben. Der Code lautet wie folgt: @Prüfen öffentliche Leere testGzip() { HttpClient httpClient = neuer HttpClient(); GetMethod getMethod = neue GetMethod("http://localhost/admin.jsp"); versuchen { getMethod.addRequestHeader("accept-encoding", "gzip,deflate"); getMethod.addRequestHeader("user-agent","Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int result = httpClient.executeMethod(getMethod); wenn (Ergebnis == 200) { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html); System.out.println(html.getBytes().length); } } Fang (HttpException e) { e.printStackTrace(); } Fang (IOException e) { e.printStackTrace(); Endlich : Gibt an, ob die Verbindung freigegeben wurde. } } Führen Sie dieses JUnit-Programm aus und sehen Sie, was es ausgibt. Wenn die Ausgabe einige verstümmelte Zeichen enthält und die Länge des gedruckten Inhalts viel kleiner als die tatsächliche Länge ist, bedeutet dies, dass unsere Konfiguration wirksam ist. Durch einige andere Überprüfungstools werden Sie feststellen, dass die Geschwindigkeit beim Surfen auf der Website erheblich verbessert wird. Hinweis: Wenn Sie feststellen, dass der Inhalt nicht komprimiert ist, können Sie die Größe „compressionMinSize“ anpassen. Wenn die angeforderte Ressource kleiner als dieser Wert ist, wird die Komprimierung nicht aktiviert. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So implementieren Sie geplante MySQL-Aufgaben unter Linux
>>: Installations-Tutorial für mysql8.0rpm auf centos7
Die Inhaltseigenschaft wurde bereits in CSS 2.1 e...
Dieser Artikel enthält das ausführliche Installat...
Wenn ich irgendwelche unklaren Fragen habe, gehe ...
Beschreibung der HTML-Meta-Viewport-Attribute Was...
Inhaltsverzeichnis Was ist VUE Kern-Plugins in Vu...
Vorwort Während des Entwicklungsprozesses verwend...
Native JS implementiert das Klickzahlenspiel zu I...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis Überprüfung der responsiven Pr...
Inhaltsverzeichnis Hintergrund Problemort Weitere...
Inhaltsverzeichnis 1. Übersicht 1.1 Was ist der s...
Dieser Artikel stellt den Import und Export von D...
Remax ist ein von Ant entwickeltes Open-Source-Fr...
Ich habe kürzlich gesagt, dass Design ein Gefühl d...
Flex-Layout ist heutzutage eine häufig verwendete...