2009-11-28 104 views
0

我在web應用程序(使用Spring構建,Struts2 REST,使用PostgreSQL)上使用JMeter進行壓力測試。Tomcat上的平均最大併發用戶數

我模擬典型用戶的情況下與我的應用程序:

4 GET,3 INSERT,UPDATE 20個來電。

服務器規格:

4core英特爾至強X5365 3GHz的

8GB RAM

單320GB SATA硬盤

操作系統:Ubuntu的8.10 32位

DB:在PostgreSQL 8.4

的Tomcat 6.0.18

的Java 1.6.0_14

結果表明,服務器將處理大約130個併發事務。這個數字可能嗎?網上有沒有結果與我的比較?

回答

4

瓶頸將存在於您的數據庫中,因此如果不知道數據庫性能,就很難進行比較。

我們有一個類似的機器(除了16GB RAM,運行Tomcat 5.5)。在峯值負載中,它可以輕鬆地提供256個同時連接。我們正在討論的maxThreads更改爲512

一些優化技巧,

  1. 如果運行Apache作爲前端,使用mod_jk。它的表現遠遠好於mod_proxy
  2. 如果您是直接服務於HTTP或使用mod_proxy的,使用NIO連接器的Tomcat 6
  3. 確保您的線程池(maxThreads)足夠大時,默認情況下只有200
  4. 讓Tomcat的無狀態。特別是,不要使用HttpSession。狀態可能會導致應用程序內存泄漏並逐漸降低性能。將你所有的狀態推送到數據庫或客戶端(cookies)。
  5. 是否使用數據庫池(DBCP)。我們有MySQL,JDBC驅動非常健談。
  6. 如果運行JMeter的一個實例,它可能會成爲瓶頸。運行來自不同網絡的多個從站來模擬實際生產負載。
+1

不錯的清單,但不是'commons-dbcp',最好使用'tomcat-jdbc'。 DBCP即單線程。更多信息:http://vigilbose.blogspot.com/2009/03/apache-commons-dbcp-and-tomcat-jdbc.html – BalusC 2009-11-28 23:54:34

+0

DBCP已經存在了很長一段時間,它的弱點是衆所周知的。任何使用它的人都已經知道如何處理它。我們得到了很好的表現。 Tomcat池是如此新。我現在不想跳過它。 – 2009-11-29 01:04:19

+0

真的很棒的答案。明天我會嘗試一切並回來。 – Trick 2009-11-29 15:56:44