2

一部のWAS7.0.0.19プログラムでjvisualVMを使用し、CPUをサンプリングしました。その大部分がboundedbuffer.waitGet_()に送られているようです。

これが正常かどうか説明できますか?

ありがとうございました。

4

1 に答える 1

6

はい、これは実際には(一種の)正常です。これらのタイミングは、次の状態のスレッドが原因で発生します。

"Deferrable Alarm : 0" - Thread t@35
   java.lang.Thread.State: TIMED_WAITING
        at java.lang.Object.wait(Native Method)
        - waiting on <6bc66bc6> (a com.ibm.ws.util.BoundedBuffer$GetQueueLock)
        at java.lang.Object.wait(Object.java:196)
        at com.ibm.ws.util.BoundedBuffer.waitGet_(BoundedBuffer.java:187)
        - locked <6bc66bc6> (a com.ibm.ws.util.BoundedBuffer$GetQueueLock)
        at com.ibm.ws.util.BoundedBuffer.poll(BoundedBuffer.java:609)
        at com.ibm.ws.util.ThreadPool.getTask(ThreadPool.java:899)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1653)

これらは、アイドル状態で新しいタスクを待機している単なるワーカースレッドです。CPU時間を消費しません。何らかの理由で、VisualVMは、(他の待機中のスレッドと同様に)無視するのではなく、この状態のスレッドをプロファイリングデータに含めます。

VisualVMによって表示されるデータを見ると、この状態のスレッドは「Self time」値にのみ寄与し、「Self time(CPU)」には寄与しないことに気付くかもしれません。「自己時間(CPU)」でソートすると、WebSphereプロセスのCPU使用率をより現実的に把握できます。

于 2012-11-01T20:06:59.217 に答える