我已经构建了一个无状态的 java servlet Web 应用程序,要求每秒至少接受 5000 个事务(具有 150 个并发线程)。我将 ehcache 与 SQL Server 2005 一起使用,以避免写入慢速硬盘。
在性能测试中(使用 Jmeter 150 线程),我每秒只能获得大约 2800 个事务(不到预期的一半)。当我在 JVisualVM 中使用采样器时,我注意到:
org.apache.catalina.connector.requestfacade.getsession() <-- take more than 44.7% of CPU time
知道 requestfacade.getsession() 在做什么,有没有办法加快速度?虽然我必须优化我的代码,但我仍然需要弄清楚上面的行做了什么,否则每秒 5000 次几乎是不可能的。
Tomcat 配置:
- 单个 Tomcat 实例 (6.0.23) - 使用 Connectir 执行器,最大线程数为 150
服务器配置:
-Windows 2008
-至强四核
-8GB 内存
-1TB 突袭 5 硬盘
任何帮助都必须感谢!