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

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

我在 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 是否可以解决此问题?

或者,我还应该研究其他什么吗?

站点分析工具截图: 在此处输入图片描述

答案1

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

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

测试期间 HTTP 线程在做什么?当发生这种现象时,转储堆栈跟踪将会非常有帮助。如果您发现某些资源的下载时间过长,只需执行转储并找到有问题的线程(使用调整后的访问日志,您可以打印线程名称)。

答案2

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

相关内容