6

Tomcat6で実行されているTapestry-Spring-HibernateWebアプリがあり、1秒間に約1000のリクエストを処理します。ランダムに、明白な理由なしに、ページはブラウザにランダムな文字の束を表示するだけです。ただし、ページを更新すると正常に表示されます。Chromeの文字化けしたページのソースのスクリーンショットは次のとおりです。

Chrome上のTomcatからのページ

これが私がこれまでに見つけたものです:

  1. ブラウザ固有ではないようです。ChromeとFirefoxでこれを目撃しましたが、ユーザーはIE7以降でもこれを報告しています。
  2. サーバーの負荷は、これがいつ発生するかとは相関関係がないようです。
  3. ページを更新すると、何も起こらなかったかのように、ページが正常に表示されます。
  4. サーバーまたはアプリケーションログに関連するものが何も表示されません
  5. ページのcontent-typeタグは<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
  6. 同じコンテナにデプロイされた他の2つのWebアプリがあります。1つはAlfrescoですが、これらはまったくこれを示していないようです。

私の質問は、誰かが以前にこれに遭遇したことがありますか?もしそうなら、彼らは私がどこから探し始めるべきかを私に教えてもらえますか?これは、コンテンツタイプが正しくないページや、サーバーが何らかの理由でページを処理できないなどの問題ですか?または、これはタペストリーまたはアプリケーション自体のフレームワークのバグである可能性がありますか?どんなポインタでも大歓迎です。この時点では、問題がどこにあるのかわからないため、これがServerFaultで発生するのか、ここにとどまるのかはわかりませんでした。

4

3 に答える 3

2

アプリケーションのバグである可能性があります。(ほとんどのバグは...プログラマーが何か他のものを非難する自然な傾向にもかかわらずです。)

ただし、この問題を追跡するのは少し難しいかもしれません。標準的なものから始めることをお勧めします。

  • サーバーエラーログを調べて、これらの「イベント」のいずれかが発生したときに何か奇妙なことが表示されるかどうかを確認します。
  • サーバーアクセスログを調べて、ガベージデータを生成したリクエストを特定できるかどうかを確認します。
  • ブラウザのデバッガを有効にして、その方法で不正なリクエストを追跡できるかどうかを確認します。

悪い反応を引き起こした要求が何であったかを理解できれば、原因を見つけるのにより多くの牽引力があります。


FWIW-これは文字エンコードの問題の結果のようには見えません。これは、バイナリデータまたは圧縮データのように見えます。

于 2012-05-23T13:46:00.810 に答える
1

これが、文字化けしたページを表示する原因となった1つの状況です。エラーページで、TapestryはX-Tapestry-ErrorMessageという応答ヘッダーを設定します。明らかに、ヘッダーには改行が許可されていないため(少なくとも一部のブラウザーでは)、そのヘッダーに改行が含まれていると、ぎこちないものになります。設定していたエラーメッセージの1つに、たまたま末尾に改行がありました。そのヘッダーを設定する前に改行を削除するように変更したところ、エラーページが正しく表示されました。

于 2012-05-24T05:25:00.237 に答える
0

これは、Tapestryフレームワークのgzip圧縮の問題に関連しているようで(@barnyrによって提案されているように)、Tapestry5.3のリグレッションバグである可能性があります。メーリングリストのスレッドからハワードを引用するには:

これは、特定の状況下で、ページコンテンツの破損したGZIPストリームがクライアントにストリーミングされるバグであると思います。これは確かに5.2.6で修正されていますが、5.2.5でも修正されていると思いました。

contributeApplicationDefaults簡単な修正は、アプリのモジュールクラスのメソッドに次の構成シンボルを追加することです。

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

これはもちろんgzip圧縮を無効にしますが、トレードオフを行う価値があるかもしれません。

おそらく関連する問題:

于 2012-06-16T21:39:16.177 に答える