Apache + Tomcat mit mod_jk: maxThread Einstellung beim load balancing
Habe ich Apache + Tomcat-setup mit mod_jk auf 2 Servern. Jeder server hat seinen eigenen Apache+Tomcat-pair-Mädchen, und jeder Wunsch wird bedient von Tomcat-load-balancing Arbeitnehmer auf 2 Servern.
Ich habe eine Frage, wie Apache ' s maxClient
und Tomcat maxThread
festgelegt werden sollten.
Die Standard-zahlen sind,
Apache: maxClient=150, Tomcat: maxThread=200
In dieser Konfiguration, wenn wir nur 1 server-setup, es funktioniert gut als Tomcat worker erhält nie die eingehenden verbindungen mehr als 150 auf einmal. Jedoch, wenn wir den Lastenausgleich zwischen 2 Servern, könnte es möglich sein, dass Tomcat worker erhält 150 + (eine Zahl von einem anderen server) und stellen Sie die maxThread überlauf als SEVERE: All threads (200) are currently busy
?
Wenn dem so ist, sollte ich Tomcat maxThread=300
in diesem Fall?
Dank
Es macht ein router. Aber es macht keinen Filterung von traffic-Volumen. Also jeder Apache kann erhalten 150 Anfragen(und mehr) auf einmal.
InformationsquelleAutor c4il | 2010-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einstellung maxThreads 300 sollte in Ordnung sein - es gibt keine festen Regeln. Es hängt davon ab, ob Sie irgendwelche verbindungen verwehrt wird.
Erhöhung zu viel verursacht hohe Speicherverbrauch aber die Produktion Kater bekannt sind, um mit 750 threads. Siehe auch hier. http://java-monitor.com/forum/showthread.php?t=235
Haben Sie tatsächlich bekam die
SEVERE
Fehler? Getestet hab ich auf unserem Tomcat-6.0.20 und es wird eine INFO-Meldung, wenn die maxThreads überschritten wird.Es nicht verweigern, verbindungen, bis die
acceptCount
Wert überschritten wird. Der Standardwert ist 100.Aus der Tomcat-docs http://tomcat.apache.org/tomcat-5.5-doc/config/http.html
Die Weise, die es funktioniert, ist
1) Als die Anzahl der gleichzeitigen requests zu erhöhen, threads werden erstellt, bis die konfigurierte maximale (Wert des maxThreads-Attribut).
Also in deinem Fall, wird die Meldung "Maximale Anzahl von threads (200) erstellt" erscheint an diesem Punkt. Aber die Anfragen werden immer noch in der Warteschlange für den Dienst.
2) Wenn noch mehr gleichzeitige Anfragen eingegangen sind, werden Sie in eine Warteschlange gestellt, bis die konfigurierte maximale (Wert des acceptCount-Attribut).
Somit insgesamt 300 Anfragen können angenommen werden, ohne zu Versagen. (vorausgesetzt, Ihr acceptCount ist auf den Standardwert 100)
3), die über diese Zahl wirft Connection Refused Fehler, bis die Ressourcen verfügbar sind, diese zu verarbeiten.
So sollten Sie gut auf, bis Sie auf Schritt 3
InformationsquelleAutor JoseK