Java:Tomcat 提供静态文件的速度很慢?

Mic*_*ael 5 tomcat java

我正在 Windows 2008 平台上运行 Apache Tomcat (5.5) 的一个实例。我想我看到了一个与并发文件访问/锁定相关的问题。

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

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

是否有任何工具可以用于 Java 来确定是否是这种情况?Tomcat APR / Apache Native Library 是否有可能解决这个问题?

或者,还有什么我应该研究的吗?

网站分析工具截图: 在此处输入图片说明

Tom*_*icz 4

Tomcat 7 支持在 WAR 之外提供静态文件。请参阅此处(第 4 点)。您尝试过吗?

您能否确认是 Tomcat 产生了这样的延迟(例如使用 Tomcat 的访问日志)?将缓慢下载的文件与服务器端访问日志中的条目相关联应该不难。

测试期间 HTTP 线程在做什么?当这种现象发生时,转储堆栈跟踪将是令人惊奇的。如果您发现某些资源下载时间过长,只需执行转储并找到有罪的线程(通过调整访问日志,您可以打印线程名称)。