我正在Web应用程序上使用JMeter
进行压力测试(使用Spring,Struts2 REST构建,使用PostgreSQL)。
我正在用我的应用程序模拟典型用户的场景:
4个GET,3个INSERT,20个UPDATE调用。
服务器规格:
4核Intel Xeon X5365 3GHz
8GB RAM
单个320GB SATA磁盘
操作系统:Ubuntu 8.10 32bit
DB:PostgreSQL 8.4
Tomcat 6.0.18
Java 1.6.0_14
结果表明,服务器将处理大约130个并发事务。这个号码可以吗?在线有什么结果可以和我的比较吗?
最佳答案
瓶颈将在您的数据库中,因此很难在不知道数据库性能的情况下进行比较。
我们有一台类似的机器(16GB RAM除外,运行Tomcat 5.5)。在峰值负载下,它可以轻松地同时服务256个连接。我们正在讨论将maxThreads更改为512。
一些调优技巧
如果将Apache作为前端运行,请使用mod_jk
。它的性能比mod_proxy
好得多。
如果直接提供HTTP服务或使用mod_proxy,请使用Tomcat 6中的NIO连接器。
确保您的线程池(maxThreads)足够大,默认值仅为200。
使Tomcat变为无状态。特别是,不要使用HttpSession。该状态可能导致应用程序内存泄漏,并逐渐降低性能。将您的所有状态推送到数据库或客户端(cookie)。
不要使用数据库池(DBCP)。我们有MySQL,JDBC驱动程序非常健谈。
如果您运行一个JMeter实例,它可能会成为瓶颈。运行来自不同网络的多个从站以模拟实际的生产负载。