0

Ubuntu、11.04、11.10。tomcat 7.0.25-7.0.28、jdk sun 1.6_30 - 1.6_33。

解凍され、削除された webapp フォルダー。catalina の起動後、1cpu x64 4 コアで tomcat が CPU を 170% 使用していることが表示されます。2cpu x64 4core では最大 400% を示します。

Tomcat にインストールされるアプリケーションはありません。CPUを消費するスレッドを見つけようとしました - 以下は5つのトップスレッドです:

"VM Periodic Task Thread" prio=10 tid=0x0000000040a7f000 nid=0x166c waiting on condition

"ajp-bio-8009-AsyncTimeout" daemon prio=10 tid=0x00007feaf0666800 nid=0x16ad sleeping[0x00007feafe011000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.tomcat.util.net.JIoEndpoint$AsyncTimeout.run(JIoEndpoint.java:148)
        at java.lang.Thread.run(Thread.java:662)

"http-bio-8080-AsyncTimeout" daemon prio=10 tid=0x000000004204f800 nid=0x16ab waiting on condition [0x00007feafead1000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.tomcat.util.net.JIoEndpoint$AsyncTimeout.run(JIoEndpoint.java:148)
        at java.lang.Thread.run(Thread.java:662)

"ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=10 tid=0x0000000041d1b800 nid=0x16a9 sleeping[0x00007feafe405000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1517)
        at java.lang.Thread.run(Thread.java:662)

"VM Thread" prio=10 tid=0x0000000040a39000 nid=0x1665 runnable

何も面白くないように見えます。だから、私は立ち往生しています。さらにどこに行くべきか知っている人はいますか?もう 1 つ: ほぼ同じ設定の複数の仮想ボックスを用意してください。これほど膨大な CPU 消費が発生することはありません。

4

2 に答える 2

1

Javaの「VM定期タスクスレッド」でCPU使用率が高いという同じ問題がありました。

この問題の原因は、最終的にうるう秒に関する Linux の問題が原因でした。詳しくは、次のブログ記事で説明されています: Java うるう秒のバグ – 2012 年 6 月 30 日 / 7 月 1 日 – 修正

そこに記載されている手順(ntpdの停止、日付のリセット、ntpdの再起動)に従うと、CPU使用率が高いという問題が解決されました。

于 2012-10-01T23:59:11.620 に答える
1

ステータスのスレッドはTIMED_WAITINGCPU サイクルを必要としません。すべてのスレッドがこの状態にある限り、Tomcat が負荷の原因になることはありません。

他に何ができますか?

  1. プロファイラーで Tomcat を実行します。スレッド ダンプ (現在の状態を表示するだけ) とは異なり、プロファイラーはプロファイリング情報を収集します。これにより、どのメソッドがどれだけの時間を使用しているかを確認できます。

  2. webapp フォルダーに少なくとも 1 つのアプリを残します。やるべきことが見つからないとき、Tomcat が何をするのかわかりません。

  3. Tomcat が webapp フォルダーを調べていると思われるかどうかを確認します。おそらく、環境変数がこれに影響を与える可能性があります。

  4. これは、Tomcat が起動しているために発生する可能性があります。可能性は低いですが、数分待つと役立つ場合があります。

  5. RAMはどれくらい残っていますか?また、それは大きな負荷を与えるはずですが、CPU はかなりアイドル状態になるため、可能性は低いです。

于 2012-07-06T12:01:30.210 に答える