LINUXでCPUの処理待ちが発生しているのですが、処理待ちしているのが、どのプロセスなのかを調べる方法を教えてください。


知りたい理由は、CentOSで時々ネットワーク接続が固まるためです。

・リモート接続していると、通信が固まる。
・運用サイトをみると、通信が帰ってこない。

いろいろと原因調査をしていますが、メモリは異常なしですが、CPUのみvmstatを流していると、問題時刻のみ、以下のように処理待ちが50%発生します。毎度50%です。そして、何もなかったかのように30秒ほどすると元に戻ります。これが15分から30分に1回発生します。

psで問題発生時のプロセスを眺めても、どの処理が50%処理待ちしているかがわかりません。mysqlを停止するとこの現象は発生しない(よう)なので、mysqlを疑っているのですが。

この情報だけでは、原因はわからないと思いますが、cpu処理待ちを調査する方法を教えてください。

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
0 2 0 151812 64000 443544 0 0 0 0 25 94 0 0 50 50 0
0 4 0 151804 64000 443544 0 0 0 0 24 85 0 0 35 65 0

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/10 21:10:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント27pt

topコマンドを使ってみてください。

id:cbic

topで待ち状況ってわかりましたっけ?

2008/12/03 21:59:20
id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301

ポイント27pt

topコマンドでCPU喰らいのプロセスと待ち状況を調べてみてください。

Manpage of TOP

id:cbic

topで待ち状況ってわかりましたっけ?

2008/12/03 21:59:23
id:b-wind No.3

回答回数3344ベストアンサー獲得回数440

ポイント26pt

Manpage of PS

直接的な調査方法ではないけれど、プロセスの状態コードが D のプロセスを調べてみては?

id:cbic

問題発生時は、psコマンドすら打てない(ネットワーク接続できないから)です。。

2008/12/03 23:20:37
  • id:b-wind
    >ネットワーク接続できないから
    vmstat はOKで ps はだめなの?
    ネットワークがダメでもコンソールから実行すれば良いし、cron で実行しても良いと思うけど。
  • id:Kumappus
    なんとなくこんなに帰ってこないってのはIO周りの、かなりカーネルに近いところで起きているエラーなんじゃないかという気がする。
    HDDとかNICが死にかけているとか。
  • id:cbic
    >b-windさん

    いや、ほんとにそうなんですよ。vmstatはokでも、psは受け付けず・・・。
    コンソールから直接やると、kthreaddが動いていました。

    >kumappusさん

    わたしもそんな気がしています。io待ちはないのに、cpuのio待ち・・・。
  • id:kn1967
    topではキューの状態は判らんじゃないか・・・って話だと思いますが
    こちらがtopを回答した理由としては「何(誰)が喰ってるのか?」という
    別の方面からの原因探索を示唆したかったからです。

    psすらも受け付けない・・・。
    事前に走らせていた(事前にリソースを確保していた)vmstatが
    動き続ける事が出来ていても、既にリソース(あるいはキュー?)が一杯の状態で
    新たなコマンド(psなど)を投入しても動かなくて当然かもしれませんね。

    topを動かし続けて大飯喰らいを探す事もやっていただければと思いますが、
    vmstatでメモリやスワップの使用状況なども調べてみてください。
    MySQLなどの重たいものが動いているのだとすれば
    優先度や共有メモリの使用量などを変えてみるなどの工夫で対処可能かもしれません。
    (ハード的故障も考えられますけどメモリ不足かチューニング不足のような気がする・・・)
  • id:cbic
    >kn1967さん

    細かいアドバイスありがとうございます。

    topでも状況把握に努めてはいるんですが、CPUを食ってるやつも、ましてメモリを食ってるやつもいなかったです。

    当初mysqlを疑っていましたが、停止して様子をみていましたが、同じように発生していたので、mysql単体が原因でもなさそうです。

    ハードディスクのチェック、ハードウェアRAIDのため、RAIDの確認をしても特に異常はなく・・・
    もう少し様子を見たいと思います。
  • id:kelly1414213
    /var/log/messagesは眺めてみましたか?なんとなくエラーっぽいので、なんらかのメッセージが残っているかも知れません。念のためチェックした方がいいと思います。

    あと、ハードディスクのアクセスランプは確認できますか?ハードディスク周りで何かが起こっている感じがするのですが、処理待ちのときにアクセスランプが点きっぱなしになってないか確認してみてはどうでしょうか。アクセスランプが点きっぱなしならばハードディスク周りの処理待ちという可能性が高まります。どのプロセスかは分かりませんが、状況は絞り込めるかなと。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません