Konfigurieren von Tomcat zu verwenden mehr als 1 CPU?
Wir haben einen neuen Kunden, und derzeit sind wir die Durchführung von stress-test auf der Produktions-wie der server mit 100 gleichzeitigen http-threads (mit Jmeter). Das problem ist, obwohl wir haben 2 Xeon-Prozessor (jede CPU mit 4 Kernen, insgesamt 8-core), sehe ich nur tomcat nutzen 4 Kerne, nicht 8 Kerne. die 4 Kerne, ich glaube, es gehört nur 1 Prozessor. die anderen 4 threads ist praktisch schlafen.
habe ich den Eindruck, die vom Apache-Dokument, dass, wenn wir multi-CPU-Maschine ist, sollten wir konfigurieren acceptorThreadCount="2" :
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
Ändern wir die default-connector-auf-tomcatThreadPool mit maxThreads="150" minSpareThreads="4" und Anschluss executer zu haben acceptorThreadCount="2". Aber es ist nur noch die Verwendung von 1 CPU.
Irgendeine Idee, wie zu konfigurieren, zu nutzen alle Kerne (oder alle CPU ' s Prozessoren)?
- Die JVM stellt die Auslastung, so können Sie Ihre Belastung ist nicht hoch genug. Können Sie erhöhen und versuchen?
- ich habe versucht mit 200 und 300 threads, es ist immer noch das gleiche.
- welches OS ist dieser auf?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar random-Gedanken, um Ihnen zu helfen.
Die JVM wird dies seine eigene Planung der Aufgaben intern. Es gibt Zeiten, wenn die JVM nicht denken, dass eine CPU übermäßig besteuert es berechtigt ist, ein paar Kerne für kritische Operationen. Deshalb finden Sie einige Kerne verwendet wird, und andere sitzen im Leerlauf.
Andere Möglichkeit ist, dass die CPU-Affinität muss explizit festgelegt werden.
In Unix können Sie prüfen, welche CPU ' s die JVM wurde gewählt, um die Verwendung mit dem taskset-Befehl::
In Windows, können Sie Ihren task-manager, gehen Sie zur Registerkarte "Prozess", rechten Maustaste auf einen Prozess und wählen Sie " set Affinity. Sie können sehen, welche CPU/Cores festgelegt sind, verwendet werden.
Ich bin mir nicht bewusst eine start-up-parameter in Java/Tomcat zu Steuern CPU-Auslastung. Ich glaube, das sollte auf der OS-Ebene. Ich habe auch nicht daran erinnern, jemals zu Lesen über die JVM-kodiert, um die Anzahl der CPU-Kerne verwendet werden.
Kommentar von @JoseK löst das ganze Flaschenhals. unser Antrag ist schriftlich zu viele melden. auf eine Instanz, die wir versucht haben zu reduzieren die Menge der log-in unserem log-Datei, bemerken wir die Allgemeine performance ist besser und eine höhere CPU-Auslastung.
Dann versuchen wir, mit log4k log-level auf "WARNEN", und wow! die Anwendung ist die Nutzung 70% aller CPU-Kerne.
Wir sollten überprüfen Sie die Datenträger-Auslastung vor, auch die Frage zu stellen. Danke!