2009-11-28 49 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

相关问题