プロが教えるわが家の防犯対策術!

CPU使用率が100%になり特定のプログラム処理が行われない

先日会社で運用しているシステムで、ある一定の処理がスキップされてしまうようなトラブルが発生しました。

状況としては、アプリケーションサーバー全台において、ある時間からずっとひとつのCPU使用率が100%となり、LoadAverageがずっと1のままです。
そして、プログラム内でEJBの非同期処理をしていた部分が一切行われなくなりました。

アプリケーション自体は数日正常に稼働しており、突然起きたことなので、プログラム自体の確認もしましたが不備が見つかりません。
エラーログにも何も残っていませんでした。

一切の非同期処理が行われていないので、EJBのバグか何か?とも思いましたが見つけることはできませんでした。

なお環境は以下の通りです。
・Linux(CentOS,RedHat) + GlassFish + Java + memcached + MySQL
・EJBはStateless Session Beanを使用。
・APサーバのCPUはサーバによってデュアルコアのものとクアッドコアのものがあります。

全く原因がわからず、何かアドバイスがいただけないかと思い書き込ませていただいています。

あまり細かい情報を記載していないので、聞いていただければどんどん補足します。

些細なことでも良いので可能性や情報をいただければと思います。

よろしくお願いします。

A 回答 (2件)

CPU100%というととりあえず浮かぶのが無限ループね。


データベースが排他かかっている間、延々待ち続ける実装になっていれば
待ちスレッドが大量に出現したのかもしれないわ。

この回答への補足

ご回答ありがとうございます。

そうですね。
無限ループも考えて、プログラムを再度見直したのですが
今のところ無限ループになるような箇所は見当たりません…

データベースはinnoDBを使用していますがどの行もロックはかかっていません。

ただ、Javaのスレッドの方はGlassFishの管理コンソールから見るとロックのようなものがかかっているようです。

補足日時:2010/04/23 09:09
    • good
    • 0

確かにJavaスレッドのロックもありえるわね。


スレッドの状態を監視してみると
特定の処理が長時間待機状態になっているのがあれば
その周辺が怪しそうね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!