Java:Tomcat缓慢提供静态文件?

我正在Windows 2008平台上运行Apache Tomcat(5.5)的一个实例。 我认为我看到与并发文件访问/locking有关的问题。

当并发HTTP线程的数量增加超过默认设置(150)时,我看到(使用站点监视工具)服务某些静态内容(.js .gif .png等)时出现越来越多的“非自然”延迟。 通过这个,我的意思是服务器在开始发送之前需要20秒,或者需要30秒来为一个小的(2KiB)文件服务。

当Tomcat繁忙时(服务超过300个线程),CPU使用率平均在50-60%左右,磁盘使用率在10-30mbps左右。

有什么工具可以用于Java来确定是否是这种情况? Tomcat APR / Apache本机库是否可以解决这个问题?

另外,还有什么我应该看看?

网站分析工具的屏幕截图: 在这里输入图像说明

Tomcat 7支持在WAR之外提供静态文件。 见这里 (第4点)你试过了吗?

你能确认这是造成这种延迟的Tomcat(例如使用Tomcat的访问日志)吗? 将缓慢下载的文件与服务器端的访问日志中的条目关联起来应该不难。

testing过程中的HTTP线程是什么? 发生这种现象时,转储堆栈跟踪将会非常棒。 如果你看到一些资源需要花费很长时间才能下载,只需执行转储并find有罪的线程(通过调整访问日志可以打印线程名称)。

在tomcat之前有一个apache web服务器,并从那里提供图像和js。 其余的stream量通过代理设置或ajp路由到tomcat。