【问题标题】:Tapestry Web App on Tomcat occasionally spits out garbageTomcat 上的 Tapestry Web App 偶尔会吐出垃圾
【发布时间】:2012-05-23 13:23:45
【问题描述】:

我们有一个在 Tomcat 6 上运行的 Tapestry-Spring-Hibernate webapp,每秒处理大约 1000 个请求。随机地,没有明显的原因,页面只是在浏览器上显示一堆随机字符。但是,当页面刷新时,它显示正常。下面是Chrome上乱码页面的来源截图:

这是我目前发现的:

  1. 它似乎不是特定于浏览器的。我在 Chrome 和 Firefox 上见证了这一点,但用户也在 IE 7 及更高版本上报告了这一点。
  2. 服务器上的负载似乎与何时发生这种情况无关。
  3. 刷新页面正常显示页面,就好像什么都没发生过一样。
  4. 我在服务器或应用程序日志中看不到任何相关内容
  5. 页面的内容类型标签是<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
  6. 在同一个容器上部署了几个其他 Web 应用,其中一个是 Alfresco,但它们似乎根本没有展示这一点。

我的问题是,以前有没有人遇到过这种情况,如果有,他们能指出我应该从哪里开始寻找吗?这是页面具有不正确的内容类型或服务器由于某种原因无法处理它的问题吗?或者这可能是 Tapestry 或应用程序本身的框架错误?欢迎任何指点。在这一点上,我不确定问题出在哪里,所以我不确定这是发生在 ServerFault 上还是留在这里。

【问题讨论】:

    标签: java tomcat gzip tapestry


    【解决方案1】:

    这很可能是应用程序中的错误。 (大多数错误是......尽管程序员自然倾向于责怪其他事情。)

    但是,追踪这个问题可能有点棘手。我建议你从标准的东西开始:

    • 查看服务器错误日志,看看在这些“事件”之一发生时是否出现任何异常情况。
    • 查看服务器访问日志,看看您是否可以识别产生垃圾数据的请求。
    • 启用浏览器的调试器,看看是否可以通过这种方式跟踪错误请求。

    如果您能找出导致错误响应的请求是什么,您将更有动力找到原因。


    FWIW - 这看起来不像是字符编码问题的结果。这看起来更像是二进制或压缩数据。

    【讨论】:

    • 您的应用会压缩响应吗?它看起来像没有标头的压缩数据,告诉浏览器它已被压缩。你的应用前面有网络服务器吗?
    • 是的,应用会压缩响应。不,我们没有前端的网络服务器。我们曾经这样做过,但那是一组完全不同的问题。我认为您可能会使用 gzip 标头进行操作。我会开始看那里谢谢!
    【解决方案2】:

    这是导致我看到乱码页面的一种情况。在错误页面上,Tapestry 设置了一个名为 X-Tapestry-ErrorMessage 的响应头。显然标头中不允许换行(至少在某些浏览器上),因此如果该标头中有换行符,则会出现乱码。我们设置的一条错误消息恰好有一个尾随的新行。我在设置该标题之前将其更改为删除任何换行符,然后错误页面正确显示。

    【讨论】:

      【解决方案3】:

      这似乎与 Tapestry 框架中的 gzip 压缩问题有关(正如 @barnyr 所建议的那样),并且可能是 Tapestry 5.3 中的回归错误。从mailing list thread引用霍华德:

      我相信这是一个错误,在某些情况下,损坏的 页面内容的 GZIP 流将流式传输到客户端;这是 肯定在 5.2.6 中修复了,但我认为它在 5.2.5 中也已修复。

      快速解决方法是在应用模块类的contributeApplicationDefaults方法中添加如下配置符号:

      configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "false");
      

      这当然会禁用 gzip 压缩,但可能值得做出权衡。

      可能相关的问题:

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多