Durchschnittliche max gleichzeitige Benutzer auf Tomcat
-
06-07-2019 - |
Frage
Ich tue Stresstest mit JMeter
auf Web-Anwendung (gebaut mit Spring, Struts2 REST verwendet PostgreSQL).
Ich simuliert typische Benutzer-Szenario mit meiner App:
4 GET, 3 INSERT, UPDATE 20 Anrufe.
Serverdaten:
4core Intel Xeon X5365 3GHz
8 GB RAM
Einzel 320 GB SATA Festplatte
OS: Ubuntu 8.10 32bit
DB: Postgresql 8.4
Tomcat 6.0.18
Java 1.6.0_14
Die Ergebnisse zeigen, dass die Server rund 130 gleichzeitige Transaktionen umgehen würde. Ist diese Zahl möglich? Gibt es irgendwelche Online-Ergebnisse mit meinem vergleichen?
Lösung
Der Engpass in der Datenbank sein, so die sehr schwer ist, ohne zu wissen, Ihre Datenbank-Performance zu vergleichen.
Wir haben eine ähnliche Maschine (außer mit 16 GB RAM, läuft Tomcat 5.5). In Spitzenlast, kann es 256 gleichzeitige Verbindungen leicht bedienen. Wir diskutieren die maxThreads auf 512 zu ändern.
Einige Tuning-Tipps,
- Wenn Sie Apache als Frontend, Verwendung
mod_jk
laufen. Seine Leistung ist viel besser alsmod_proxy
. - Wenn Sie HTTP-Kunden sind oder mod_proxy, verwenden Sie den NIO-Anschluss in Tomcat 6.
- Stellen Sie sicher, dass Ihre Thread-Pool (maxThreads) ist groß genug, Standard ist nur 200.
- Stellen Sie Tomcat state-weniger. Insbesondere nicht Http verwenden. Der Zustand kann Speicherverlust in der app verursachen und die Leistung nach und nach abgebaut. Schieben Sie alle Ihren Zustand zu Datenbank oder Client (Cookies).
- Nutzung Datenbank Do Pooling (DBCP). Wir haben MySQL, der JDBC-Treiber ist sehr gesprächig.
- Wenn Sie eine Instanz von JMeter ausführen, kann es zum Engpass werden. Führen Sie mehrere Sklaven aus verschiedenen Netzwerken zu realer Produktionslast zu simulieren.