Sortieren Sie sorgfältig die umfassendsten Tomcat-Interviewthemen und -Antworten im gesamten Netzwerk. Dies reicht aus, um dieses Tomcat-Interview zu lesen!

1. Was ist der Standardport von Tomcat und wie kann man ihn ändern?

1) Suchen Sie den Ordner conf unter dem Tomcat-Verzeichnis.
2) Geben Sie den Ordner conf ein und suchen Sie die Datei server.xml.
3) Öffnen Sie die Datei server.xml.
4) Suchen Sie die folgenden Informationen in der Datei server.xml

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>

port = "8080" zum gewünschten Port

2. Welche Arten von Anschlussbetriebsarten (Optimierung) hat Tomcat?

bio: Traditionelle Java-E / A-Operationen, synchrone und blockierende E / A. maxThreads = ”150” // Tomcat verwendet Threads, um jede empfangene Anforderung zu verarbeiten. Dieser Wert gibt die maximale Anzahl von Threads an, die Tomcat erstellen kann. Der Standardwert ist 200. Sie kann entsprechend der Periodenleistung und der Speichergröße der Maschine angepasst werden, im Allgemeinen zwischen 400 und 500. Das Maximum kann bei 800 liegen. minSpareThreads = ”25” - Die Anzahl der Threads, die bei der Initialisierung von Tomcat erstellt wurden. Der Standardwert ist 4. Wenn derzeit keine Leerlauf-Threads vorhanden sind und maxThreads nicht überschritten wird, wird die Anzahl der gleichzeitig erstellten Leerlauf-Threads angegeben. Die Anzahl der Threads, die bei der Initialisierung von Tomcat erstellt werden, wird ebenfalls durch diesen Wert festgelegt. maxSpareThreads = ”75” - Sobald die erstellten Threads diesen Wert überschreiten, fährt Tomcat Socket-Threads herunter, die nicht mehr benötigt werden. Der Standardwert ist 50. Sobald die Anzahl der erstellten Threads diesen Wert überschreitet, fährt Tomcat nicht mehr benötigte Threads herunter. Die Anzahl der Threads kann grob berechnet werden durch "die durchschnittliche Anzahl von Benutzern, die gleichzeitig pro Sekunde arbeiten, und die durchschnittliche Betriebszeit des Systems". acceptCount = ”100” - Geben Sie die Anzahl der Anforderungen an, die in die Verarbeitungswarteschlange gestellt werden können, wenn alle verfügbaren Threads für die Verarbeitung von Anforderungen verwendet werden. Anforderungen, die diese Anzahl überschreiten, werden nicht verarbeitet. Der Standardwert ist 10. Wenn die Anzahl der derzeit verfügbaren Threads 0 ist, wird die Anforderung in die Verarbeitungswarteschlange gestellt. Dieser Wert begrenzt die Größe der Anforderungswarteschlange. Anforderungen, die diesen Wert überschreiten, werden nicht verarbeitet. connectionTimeout = ”20000” - Das Zeitlimit für die Netzwerkverbindung ist abgelaufen. Der Standardwert ist 20000, Einheit: Millisekunden. Das Setzen auf 0 bedeutet, dass niemals eine Zeitüberschreitung auftritt, daher birgt die Einstellung versteckte Gefahren. Kann normalerweise auf 30000 Millisekunden eingestellt werden.

nio: JDK1.4 begann, synchrones Blockieren oder synchrones nicht blockierendes E / A zu unterstützen. Geben Sie das NIO-Modell an, um HTTP-Anforderungen zu akzeptieren. Protocol = "org.apache.coyote.http11.Http11NioProtocol" Geben Sie das NIO-Modell an, um HTTP-Anforderungen zu akzeptieren. Der Standardwert ist BlockingIO, und die Konfiguration lautet protocol = ”HTTP / 1.1” acceptorThreadCount = ”2”. Die Anzahl der empfangenden Threads bei Verwendung des NIO-Modells aio (nio.2): JDK7 beginnt, asynchrone nicht blockierende E / A zu unterstützen.

apr: Tomcat ruft die dynamische Kernverbindungsbibliothek des Apache HTTP-Servers in Form von JNI auf, um das Lesen von Dateien oder Netzwerkübertragungsvorgänge zu verarbeiten, wodurch die Verarbeitungsleistung von Tomcat für statische Dateien erheblich verbessert wird.

<!--
 <Connector connectionTimeout="20000" port="8000"
protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>
 -->
 <!-- protocol 启用 nio 模式,(tomcat8 默认使用的是 nio)(apr 模式利用系统级异步 io) -->
 <!-- minProcessors 最小空闲连接线程数-->
 <!-- maxProcessors 最大连接线程数-->
 <!-- acceptCount 允许的最大连接数,应大于等于 maxProcessors-->
 <!-- enableLookups 如果为 true,requst.getRemoteHost 会执行 DNS 查找,反向解析 ip 对应域名或主机名-->
 <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" redirectPort="8443 maxThreads=“500” minSpareThreads=“100” maxSpareThreads=“200” acceptCount="200" enableLookups="false"/>

Andere Konfigurationen maxHttpHeaderSize = "8192" Der maximale Umfang der HTTP-Anforderungsheaderinformationen, wobei der Teil diese Länge überschreitet, wird nicht verarbeitet. Im Allgemeinen 8K. URIEncoding = "UTF-8" gibt das URL-Codierungsformat des Tomcat-Containers an. disableUploadTimeout = "true" Gibt an, ob beim Hochladen der Timeout-Mechanismus verwendet werden soll. enableLookups = "false" - Gibt an, ob der Domänenname rückgängig gemacht werden soll. Der Standardwert ist true. Um die Verarbeitungskapazität zu verbessern, sollte der Wert auf false compress = "on" gesetzt werden. Aktivieren Sie die Komprimierungsfunktion compressMinSize = "10240". Aktivieren Sie die Größe des komprimierten Ausgabeinhalts. Der Standardwert ist 2 KB. NoCompressionUserAgents = "gozilla, traviata" Browser, aktivieren Sie die Komprimierung nicht compressableMimeType = "Text / HTML, Text / XML, Text / Javascript, Text / CSS, Text / Nur"

3. Wie viele Bereitstellungsmethoden hat Tomcat?

1) Platzieren Sie das Webprojekt direkt unter Webanwendungen, und Tomcat stellt es automatisch bereit.
2) Konfigurieren Sie den Knoten in der Datei server.xml und legen Sie die relevanten Attribute fest.
3) Konfigurieren Sie über Catalina: Geben Sie die Datei conf \ Catalina \ localhost ein. Erstellen Sie eine XML-Datei, deren Name der Name der Site ist. Die Art und Weise, XML zu schreiben, um zu setzen.

4. Wie erstellt der Tomcat-Container eine Instanz der Servlet-Klasse? Welches Prinzip wurde angewendet?

Wenn der Container gestartet wird, liest er die Datei web.xml in allen Webanwendungen im Verzeichnis webapps, analysiert dann die XML-Datei und liest die Servlet-Registrierungsinformationen. Laden Sie dann die in jeder Anwendung registrierte Servlet-Klasse und instanziieren Sie sie durch Reflektion. (Manchmal wird es auch bei der ersten Anforderung instanziiert.) Wenn es sich bei der Servlet-Registrierung um eine positive Zahl handelt, wird sie zu Beginn instanziiert. Wenn sie nicht geschrieben oder eine negative Zahl ist, wird sie zum ersten Mal instanziiert.

5. Speicheroptimierung

Die Einstellung des Speichermodus erfolgt in Catalina.sh. Passen Sie einfach die Variable JAVA_OPTS an, da die nachfolgenden Startparameter JAVA_OPTS als Startparameter der JVM behandeln. Die spezifischen Einstellungen sind wie folgt:

JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -
XX:NewRatio=4 -XX:SurvivorRatio=4"

Die Parameter lauten wie folgt: -Xmx3550m: Stellen Sie den maximal verfügbaren Speicher der JVM auf 3550M ein.

-Xms3550m: Stellen Sie die JVM so ein, dass der Speicher 3550m beträgt. Dieser Wert kann auf -Xmx festgelegt werden, um zu vermeiden, dass die JVM den Speicher nach Abschluss jeder Speicherbereinigung neu zuweist.

-Xmn2g: Stellen Sie die Größe der jungen Generation auf 2G ein. Die gesamte Heap-Größe = Größe der jungen Generation + Größe der alten Generation + Größe der persistenten Generation. Die permanente Generation hat im Allgemeinen eine feste Größe von 64 m, so dass nach der Erhöhung der jungen Generation die Größe der alten Generation verringert wird. Dieser Wert hat einen großen Einfluss auf die Systemleistung. Sun empfiehlt offiziell eine Konfiguration von 3/8 des gesamten Heaps.

-Xss128k: Legen Sie die Stapelgröße für jeden Thread fest. Nach JDK5.0 beträgt die Stapelgröße jedes Threads 1 MB und die Stapelgröße jedes Threads zuvor 256 KB. Passen Sie die für den Anwendungsthread erforderliche Speichergröße an. Bei gleichem physischen Speicher können durch Verringern dieses Werts mehr Threads generiert werden. Das Betriebssystem hat jedoch immer noch eine Begrenzung für die Anzahl der Threads in einem Prozess, die nicht auf unbestimmte Zeit generiert werden können. Der Erfahrungswert liegt zwischen 3000 und 5000.

-XX: NewRatio = 4: Legen Sie das Verhältnis der jungen Generation (einschließlich Eden und zweier Survivor-Gebiete) zur alten Generation (ohne permanente Generation) fest. Bei 4 beträgt das Verhältnis der jungen zur alten Generation 1: 4, und die junge Generation macht 1/5 des gesamten Stapels aus

-XX: SurvivorRatio = 4: Legen Sie das Verhältnis der Größe des Eden-Gebiets zum Survivor-Gebiet in der jungen Generation fest. Auf 4 gesetzt, beträgt das Verhältnis von zwei Survivor-Gebieten zu einem Eden-Gebiet 2: 4, und ein Survivor-Gebiet nimmt 1/6 der gesamten jungen Generation ein. -XX: MaxPermSize = 16m: Stellen Sie die Größe der persistenten Generation auf 16m ein.

-XX: MaxTenuringThreshold = 0: Legt das maximale Alter des Mülls fest. Wenn es auf 0 gesetzt ist, tritt das Objekt der jungen Generation direkt in die alte Generation ein, ohne den Survivor-Bereich zu durchlaufen. Für Anwendungen mit älteren Generationen kann die Effizienz verbessert werden. Wenn dieser Wert auf einen größeren Wert eingestellt wird, wird das Objekt der jungen Generation im Bereich Überlebende mehrmals kopiert, was die Überlebenszeit des Objekts in der jungen Generation verlängern und die allgemeine Theorie des Recyclings in der jungen Generation erhöhen kann.

6. Gemeinsame Sitzungsverarbeitung

Die aktuellen Verarbeitungsmethoden lauten wie folgt:
1) Verwenden Sie die Tomcat-eigene Sitzungsreplikationsfunktion, um auf http://ajita.iteye.com/blog/1715312 (Sitzungsreplikationskonfiguration) zu verweisen. Die Lösung besteht darin, dass die Konfiguration einfach ist, aber die Nachteil ist, dass es sich um einen Cluster handelt. Wenn die Anzahl groß ist, ist die Kopierzeit der Sitzung länger, was sich auf die Effizienz der Antwort auswirkt

2) Verwenden Sie einen Dritten zum Speichern freigegebener Sitzungen. Derzeit wird memcached zum Verwalten freigegebener Sitzungen verwendet. Mithilfe von memcached-sesson-manager bezieht sich die Sitzungsverwaltung von Tomcat auf http://ajita.iteye.com/blog/. 1716320 (Verwenden Sie MSM zum Verwalten der Tomcat-Clustersitzung.)

3) In Situationen, in denen die Strategie der klebrigen Sitzung für die Sitzung nicht sehr anspruchsvoll ist (keine Abrechnung ist erforderlich, eine erneute Anforderung ist zulässig, wenn sie fehlschlägt usw.), kann die Sitzung desselben Benutzers von Nginx oder Apache an dieselbe verarbeitet werden Tomcat, Dies ist die sogenannte Session-Sticky-Strategie, und es gibt weitere Referenzen für aktuelle Anwendungen: http://ajita.iteye.com/blog/1848665 (Tomcat-Session-Sticky) nginx enthält standardmäßig keine Session-Sticky-Module Es muss neu kompiliert werden. Der Vorteil besteht darin, damit umzugehen. Die Effizienz ist viel höher, der Nachteil ist, dass es nicht für Anlässe mit hohen Konversationsanforderungen geeignet ist

7. Fügen Sie die JMS-Fernüberwachung hinzu

Für Tomcat, das auf anderen Computern im LAN bereitgestellt wird, können Sie den JMX-Überwachungsport öffnen, und andere Computer im LAN können einige häufig verwendete Parameter über diesen Port anzeigen (einige komplexere Funktionen werden jedoch nicht unterstützt), der ebenfalls im konfiguriert ist JVM-Startparameter: Ja, die Konfiguration lautet wie folgt: -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.authenticate = false -Djava.rmi.server.hostname = 192.168.71.38 Legen Sie den Wert fest IP-Adresse der JVM-Überwachung der JVM. Der Hauptzweck besteht darin, die fehlerhafte Überwachung der Intranetadresse von 127.0.0.1 -Dcom.sun.management.jmxremote.port = 1090 zu verhindern. Legen Sie den Port der JVM-Überwachung durch JMS -Dcom fest. sun.management.jmxremote.ssl = false Festlegen der JVM-JMS-Überwachung ist nicht praktikabel SSL -Dcom.sun.management.jmxremote.authenticate = false Festlegen der JVM-Überwachung ohne Authentifizierung

8. Es gibt professionelle Analysewerkzeuge

IBM ISA, JProfiler, Probe usw. gehen einfach ins Internet, um nach bestimmten Überwachungs- und Analysemethoden zu suchen

9. Informationen zur Anzahl der Tomcat-Sitzungen

Dies kann direkt über die Webverwaltungsoberfläche von Tomcat oder mithilfe eines Drittanbieter-Tools, Lambda Probe, angezeigt werden, das etwas mehr Funktionen als die eigene Verwaltung von Tomcat bietet, jedoch nicht viel.

10. Tomcat-Arbeitsmodus?

Tomcat ist ein JSP / Servlet-Container. Als Servlet-Container verfügt er über drei Arbeitsmodi: unabhängiger Servlet-Container, In-Process-Servlet-Container und Out-of-Process-Servlet-Container.
Anforderungen zur Eingabe von Tomcat können je nach Arbeitsmodus von Tomcat in die folgenden zwei Kategorien unterteilt werden: Tomcat als Anwendungsserver: Die Anforderung stammt vom Front-End-Webserver, bei dem es sich möglicherweise um Apache, IIS, Nginx usw.; Tomcat handelt als unabhängiger Server: Die Anfrage kommt vom Webbrowser-Gerät

Vorteile für den Leser

Vielen Dank für Ihren Besuch hier!
Ich habe hier viele der neuesten Java-Interviewfragen (einschließlich Antworten) und Java-Studiennotizen für 2021 zusammengestellt, wie unten gezeigt
Fügen Sie hier eine Bildbeschreibung ein

Die Antworten auf die obigen Interviewfragen sind in Dokumentnotizen organisiert. Neben Interviews auch einige Informationen über einige der Hersteller & Interviews zusammengestellt Zhenti neuesten 2021 Sammlung kostenlos für jedermann zu teilen (beide einen kleinen Teil des Screenshots zu dokumentieren) kann in Not klicken Signal eingeben: CSDN! Kostenlos zu teilen ~

Wenn Ihnen dieser Artikel gefällt, leiten Sie ihn bitte weiter und mögen Sie ihn.

Denk daran, mir zu folgen!Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/weixin_49527334/article/details/112781048
Empfohlen
Rangfolge