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?

War es hilfreich?

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,

  1. Wenn Sie Apache als Frontend, Verwendung mod_jk laufen. Seine Leistung ist viel besser als mod_proxy.
  2. Wenn Sie HTTP-Kunden sind oder mod_proxy, verwenden Sie den NIO-Anschluss in Tomcat 6.
  3. Stellen Sie sicher, dass Ihre Thread-Pool (maxThreads) ist groß genug, Standard ist nur 200.
  4. 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).
  5. Nutzung Datenbank Do Pooling (DBCP). Wir haben MySQL, der JDBC-Treiber ist sehr gesprächig.
  6. 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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top