Tomcat 8无法响应提供静态内容服务

5
当我们将应用程序(Java,Spring)部署在Tomcat 7上时,一切正常。现在我们升级到Tomcat 8后,在提供静态内容时速度非常慢。查看开发者工具(见下面的快照),每个静态内容请求(小的.js和.css文件)需要与我们在server.xml中配置的connectionTimeout一样长的时间。因为默认值是20000,所以每个文件可能需要20秒钟。将其降低到1000后,速度会更快,每个文件只需1秒钟。

这在使用默认配置的不同开发机器上发生。其他进程(Web服务请求等)表现良好。

我想知道从哪里开始寻找原因。

Developer tools snapshot


1
具体的Tomcat 8版本是什么?如何提供静态内容服务?您的Tomcat 7安装是否为默认安装? - user180100
我添加了一个快照来说明这个序列。 - krause
@krause,您能否请您在上传的屏幕截图中突出显示问题的证据。我无法识别任何异常。 - shanmuga
@shanmug:我认为这个想法是,一旦加载了第一个.htm文件(实际上是.jsp),那么浏览器会尝试下载(或服务器提供)一些静态内容。即使是非常小的.css和.js文件,也需要接近20秒的时间来加载。然后再花费20秒的时间下载几KB大小的图片。 - krause
冒昧重复一遍:你如何提供静态内容?没有这些信息,我不知道有谁能帮忙。 - user180100
显示剩余3条评论
3个回答

5
这确实是由于Ziplet压缩过滤器中的问题,由于servlet spec 3.1更改(setContentLengthLong函数)而引起的。
我创建了一个拉取请求来修复它。
这个拉取请求已经合并到主分支,并在2016年4月18日发布(ziplet-2.1.0)。

3
下面描述的插件(pjl-comp-filter)被用作CompressionFilter,但事实证明它与Tomcat 8不兼容,因为在ziplet(它的后继者)的Github上有一个公开问题:https://github.com/ziplet/ziplet/issues/6 我用以下解决方案之一替换了它,并且它有效: 您会推荐哪种压缩(GZIP是否最受欢迎)servlet过滤器? 因此,以前的配置在Tomcat 8上无法工作: pom.xml中的依赖关系:
    <dependency>
        <groupId>org.sourceforge</groupId>
        <artifactId>pjl-comp-filter</artifactId>
    </dependency>

并且web.xml:

<filter>
    <filter-name>CompressingFilter</filter-name>
    <filter-class>com.planetj.servlet.filter.compression.CompressingFilter</filter-class>
    <init-param>
        <param-name>includeContentTypes</param-name>
        <param-value>text/html,multipart/form-data,text/css,application/x-javascript</param-value>
    </init-param>
    <init-param>
        <param-name>compressionThreshold</param-name>
        <param-value>256</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CompressingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

0
在我的情况下,我只是从web.xml中删除了压缩过滤器,一切都恢复正常了。
以下的xml在Tomcat 8中不起作用,至少在我的应用程序中不起作用。
<filter>
    <filter-name>compressionFilter</filter-name>
    <filter-class>com.googlecode.webutilities.filters.CompressionFilter</filter-class>
    <init-param> 
        <param-name>compressionThreshold</param-name>
        <param-value>1024</param-value>
    </init-param>
    <init-param> 
        <param-name>ignoreURLPattern</param-name>
        <param-value>.*\.(flv|mp3|mpg)</param-value>
    </init-param>
    <init-param> 
        <param-name>ignoreMimes</param-name>
        <param-value>images/*,video/*, multipart/x-gzip</param-value>
    </init-param>
    <init-param> 
        <param-name>ignoreUserAgentsPattern</param-name>
        <param-value>.*MSIE.*</param-value>
    </init-param>
 </filter>
 <filter-mapping>
    <filter-name>compressionFilter</filter-name>
    <url-pattern>*</url-pattern>
 </filter-mapping> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接