我已经构建了一个无状态的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/

10-10 12:48