8

Tomcat でページの応答時間をマイクロ最適化しています。ほとんどの場合、何度も更新すると応答時間が50 ミリ秒になりますが、ページが 1 秒または 2 秒間ヒットしないと、応答時間が跳ね上がります。500msまで。

ローカル、ローカルではなく、APR、NIO、JIO、静的または動的応答 (つまり、静的ファイルを提供するか、応答を動的に処理する) に関係なく、これと同じ動作を見てきました。これまでのところ、この動作が Tomcat で発生しないことはまだ確認していません(頻度に関係なく、400 ミリ秒未満で一貫しています)。

手がかりがあるかどうかを確認するために Visual VM も使用しました。

ある種のキープアライブだと思っていましたが、Apache Bench を実行すると、応答時間がさらに速くなります (サブ 50 ミリ秒) (明らかに、頻繁にヒットするため)。

では、Tomcat で頻繁に URL にヒットしないように低レイテンシーを維持するにはどうすればよいでしょうか? おそらく、この質問は ServerFault の方が適切でしょうか?

更新: Tomcat 6 の問題であるとほぼ確信しています。Tomcat 7 でテストしたと思っていましたが、再度テストしたところ問題はありませんでした (以下の結果を参照)。最新の Tomcat 6 でもまだこの問題があります。

Tomcat 6のab出力は次のとおりです (最大値に注意してください)。

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    14   39  45.2     30     314
Waiting:       14   38  45.2     30     314
Total:         14   39  45.2     30     314

abTomcat 7 の出力は次のとおりです。

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    25   38   8.8     37      67
Waiting:       25   37   8.7     36      66
Total:         25   38   8.8     37      67

Tomcat のバージョンだけが違います (同じマシン、同じ JDK など)。最新のTomcat 6でも問題ないと確信していましたが、最初のリクエストで同様のレイテンシーが発生しました。

4

1 に答える 1

1

Tomcat コードをのぞき見して、「Weak」という単語を検索することにしました。問題は、すぐに再リクエストしないと弱い参照内の何かが収集されることであるという理論に基づいています。

私は次の推測を思いつきました...私はこの興味深いクラスを見つけました:

http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/javax/el/BeanELResolver.java?revision=1027187&view=markup

BeanProperties オブジェクトのキャッシュを維持しているようで、その一部は WeakHashMap によって処理されます。キャッシュがいっぱいになると、すべてが WeakHashMap に入れられ、ガベージ コレクションが可能になります。弱いマップのアイテムが要求された場合、それらはメイン マップ (弱いものではない) に戻されます。処理の最後にページがこの動作をトリップすると (BeanProperties のキャッシュのサイズのようなものが追加されることにより、キャッシュされた Bean の説明のほとんどすべてが破棄される可能性があります。

便利なことに、これを調整するためのプロパティがあります。

private static final String CACHE_SIZE_PROP =
    "org.apache.el.BeanELResolver.CACHE_SIZE";

それで、それで遊んでみて、それが動作に影響を与えるかどうかを確認してみてください。しかし、Tomcat 7 でこのクラスに大きな変化 (クイック ルック) が見られなかったので、これはそうではないかもしれません。(以前のチューニング作業でこのプロパティを微調整していましたか?)

于 2013-03-09T03:19:05.380 に答える