我已经构建了一个无状态的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 conf:
-单个Tomcat实例(6.0.23)
-使用具有150个maxThread的Connectir执行器
服务器配置:
-Windows 2008
-xeon四核
-8GB内存
-1TB RAID 5硬盘
任何帮助都必须感谢!
最佳答案
如果您的servlet确实是无状态的,为什么它要访问会话?
:-)
关于java - Tomcat org.apache.catalina.connector.requestfacade.getsession()占用超过44.7%的CPU资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7819704/