2009-04-29 39 views
5

まず、背景の少しだけ:CPU使用率スパイク

お客様の一つは、(他のアプリとの他のインスタンスが細かいです)私たちのWebアプリケーションのいずれかを実行しているのWebSphereインスタンスのCPU使用率の急上昇を経験しています。彼らは両方の問題を経験するテスト環境とライブ環境(両方ともiSeries)を持っています。インスタンスごとに1つのアプリケーションを設定します。私たちは、このアプリケーションを独自のテスト環境にローカルに導入しました。同様の問題はなく、iSeries上の他の多くのお客様にも導入しました。実際に何が起こっている

: - 一度に処理されている何の要求がなくても20%

を1秒ごとかそこら、WebSphereプロセスのCPU使用率は、CPU使用率が7%からどこかにジャンプします。お客様は、スパイクが30%と高いと報告しています。これらのスパイクは、CPU全体で平均で1.5%になります。他のWebSphereインスタンスでは、通常、アイドル時に0%-0.1%が使用されます。

私の調査は、これまで

だから、私はスレッドを見ていました。テスト環境内の1つのスレッドは、毎秒~350のCPUサイクルを使用していました。ライブ環境の同様のスレッドでは、CPUサイクルが1秒あたり~1500(CPUが大きいことを示しています)を使用していました。これらのスレッドの呼び出しスタックは、一番下の行から全体のクラス名がcom/ibm/ws/util/BoundedBufferある

Type Program     Statement   Procedure      
     QLESPI  QSYS   17    LE_Create_Thread2__FP12crtt > 
     QJVALIBJVM QSYS   7     startThread__FPv    
J com/ibm/ws/util/Threa >     run       
J com/ibm/ws/util/Threa >     run       
J com/ibm/ws/util/Threa >     getTask      
J com/ibm/ws/util/Bound >     poll 

のように見えます。私は私のためにJVMのダンプを行うには、顧客に尋ねた - 私はこれから得た唯一の追加情報は、スレッドの名前だった:私の質問のために今

Thread: 00002F82 Deferrable Alarm : 11 

:あなたのいずれかが

  • を識別することができますこれらの症状を考えると、問題はありますか? (たぶんそれはロングショットです)
  • Deferrable Alarmとは何ですか? JVM Dumpから、私はこの名前のスレッドを4つ見ることができます。他の3人はうまくやっているようです。私のローカルWebSphere(Windows上)をデバッグし、BoundedBufferクラスにブレークポイントを追加することで、BoudedBufferがポーリングしており、定期的にリスナーを呼び出すことがわかりました。
  • カスタマー・マシン用のWebSphereコンソールへのアクセス権がなく、構成変更まで所有していません。私は彼らに私のためにコンソールをチェックするように依頼することができます - 私は彼らに見て尋ねる必要がありますか?
  • 私は顧客の箱にtelnetでアクセスできますが、ここで調べることができるものはありますか? WebSphereのプロファイルファイルなどを見る?どのファイルを調べるべきですか?
  • コールスタックとJVMダンプはコードを明示的に参照していないため、これが設定上の問題であると想定するのは安全ですか?

これは長い質問でしたので、これまで読んでいただきありがとうございます。

4月30日のアップデート(1)

今朝、私は、この動作がのみ(Webサービスが呼び出されるとは無関係に)処理されたその日の最初の要求の後に起こることに気付きました。これは、アプリケーションまたはApache Axisで指が戻ることを示します。これはちょうど正常な動作だろうか?

4月30日更新(2)

だから、このCPUの活動は、WebコンテナまたはApache Axisの内、多分何かのためのハウスキーピング活動のいくつかの種類であると思われます。私は今、いくつかの異なるサーバー上のいくつかの異なるWebアプリケーションでこの現象を観察しました。 Webコンポーネントを持たないアプリケーションでも、同じCPUオーバーヘッドが発生しません。

ハウスキーピングの仕事であれば、それをどうにかして生産性を上げることができます。つまり、App Serverのアイドル状態を良くすると、実際の仕事の量に悪影響が及ぶでしょう行う。

+0

このクライアントは他のクライアントと同じレベルのiSeriesですか?これをユニークにする他の違いはありますか? – Ichorus

+0

はい、同じレベルです。また、6.1と同様にWebSphere 5.1でも発生します。 –

答えて

0

非常に本能的(iSeriesプラットフォームに精通していない)私はディスクIO関連の問題を検討します。ディスクサブシステムについて説明できますか?あなたのアプリがiowaitで異常に長い時間を過ごしているかどうか確認できますか?

+0

提案をいただきありがとうございます。私はI/Oを見ていましたが、サーバーがアイドル状態のときはCPUスパイクはまだありますが、I/Oコールはありません。 –

0

これはあなたの問題にはあまり関係ありません。しかし、前にあなたのランニングは6.1パッチこのことができます17

http://www-01.ibm.com/support/docview.wss?uid=swg24018437

希望された場合は一見の価値があるかもしれません。乾杯John

+0

おもしろい読書..ありがとう –

0

私の最高の推測は、Tivioliなどのインスタンスで監視が行われていることです.GC活動を除外しましたか?

HTHトム

+0

コメントTomのおかげで。 Tivioliは最初に見たものの1つでした。しかし、犯人ではない。私は "ハウスキーピング"理論を使って顧客を満足させることができたので、それが今の終わりだとうまくいけば、P –

1

あなたは、メモリとCPUの使用に関連するいくつかの質問に答えることができるアプリケーションのヒープダンプを、プロファイルと行うことを試みることができます。

0

ほとんどのアプリケーションサーバーはJava自体で実装されているため、WebSphereも実装されています。このサーバーは、クライアント要求を処理する以外に、リソースプール管理などの他の定期的なジョブを実行する必要があります。このジョブを実行すると、ガベージコレクションが必要な一時オブジェクトが作成されます。

割り当てられたヒープの量、使用量、およびガベージコレクタの設定に応じて、ガベージコレクタが呼び出されます。私はそれがあなたのCPUを占有しているガベージコレクタスレッドかどうかを確認しようとします。このために、jconsoleユーティリティをリモートWebsphereプロセスに1日接続し、ヒープ使用量とCPU使用量との間に関連があるかどうかを確認します。

1

IBMが提供する必要がありますdocumentationを収集し、独自の調査と一緒にPMRを上げることをお勧めします。あなたは疑うかもしれないもの:

  • (低アプリケーションの利用上の可能性は低い)ガベージコレクション
  • タイマーや、java.utilのようなタスク(。タイマーまたはCommonJワークマネージャ)データソースのWebSphere Application Serverのデータソースのプロパティで、複雑なSQLクエリ()

を持って

  • プレテスト接続私もYourKit profilerはかなりあり、原因を特定するためにプロファイラを使用することをお勧めしますまともなもの。

  • 0

    私はBoundedBufferでこの非常に同じ問題[Deferrable Alarm:x]も使用しています。私が持っている唯一の違いは、これがWindows 7の64ビットマシン上にあることです。 Tivioliや他のバッチプロセスは全く実行されておらず、リクエストも行われていません。単一インスタンスはただアイドルです。

    私はDEBUGモードでアプリケーションを実行して、遅延アラームスレッドを一時停止し、CPUスパイクを停止して再開し、再び開始します。

    私はディスクアクティビティ、ネットワークアクティビティをチェックしましたが、何も起こっていません。

    私はWebSphere 6.1.0.27を実行しています。