0

エンタープライズ Java アプリケーション (ear - 少数の ejb と webapp) を weblogic 10 にデプロイし、Sun Java 5 を使用しています。応答時間、CPU、およびメモリ使用量は、少数のユーザーの負荷の下では問題ありませんが、同時ユーザーを > 100 しばらくすると、大きな CPU スパイクが見られます (たとえば、100 ユーザーの負荷テストでは、30 分以上のテスト後に CPU が高くなります)。hprof を使用してアプリのプロファイルを作成し、統計を収集したいと考えていましたが、CPU の使用率が高い場合、つまりテストの 30 分後にのみ実行したかったのですが、それを行う方法はありますか?

Sun Java 5 を使用しているため、jmap を使用できません。

4

3 に答える 3

1

CPU の急激なスパイクは、GC が実行されていることを示している可能性があります。その場合、これはプロファイラーに表示されません。-verbosegc を指定して実行すると、GC がいつ実行されているかを確認できます。(または jconsole を使用)

于 2009-05-17T06:11:48.563 に答える
0

他に何もない場合は、次のいくつかのオプションを試すことができます。

  • CPU の使用率が高くなったら、CTRL+BREAK を数回実行して、スレッドがどこにあるのかを「目で確認」できるかどうかを確認します(UNIX では、これを行うために、一時的に頭から離れたシグナル番号を使用してプロセスで kill を呼び出します)。 );
  • hprof を使用する場合は、とにかく全体をプロファイリングして、それが手がかりを提供するかどうかを確認してください。関心があるのが CPU の使用率が高いビットである場合は、最初に低CPUでしばらく実行中。
  • プログラム自体から、 ThreadMXBeanを介して利用可能なスレッド プロファイリング呼び出しのいくつかを使用することを検討してください。

後者は万人向けではないことを理解していますが、最終的にはやりたいことができるようになります。

于 2009-05-17T04:19:41.763 に答える
0

これは本質的に JVM 固有です。したがって、使用する JVM (Sun/BEA/IBM など) を指定する必要があります。

それを把握している間は、Web コンテナーのセッション タイムアウトを 60 秒に設定して、テストを再実行することを検討してください。

于 2009-05-17T04:07:20.407 に答える