-PR-
締切済み

UNIXのCPU負荷の自動検知法

  • すぐに回答を!
  • 質問No.10979
  • 閲覧数200
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 25% (2/8)

HP-UX11ですが、1日に1回、1分間だけCPUの負荷が100%
近くになってしまいとても困っています。
原因となるプロセス名はわかっているので本来はそのバグ
を修正すべきなのでしょうが、事情がありそれがなかなか
出来ない状態なので、CPUに負荷がかかったらそのプロセス
を殺すとしくみを自動検知で作りたいのですが、その検知
方法がわかりません。 PSをポーリングするというのはそ
れ自体が負荷となるのでNGです。
よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1

1日に1回そのプロセスが実行されるということは、

1.起動される時間が固定の場合
  cronに登録されていないか確認し
  登録されている場合は、削除する。

2.shを作成し30秒ぐらいの間隔で
  プロセス監視し、プロセスがあったらkillする。
  <shの例>
#!/bin/sh

while [ 1 ]
do
sleep 30;
PS_ID=`ps -ef | grep xxx`

if [ X$PS_ID -eq X ]
then
;
else
#ここでプロセスIDを取得しkillする

kill xx;
fi
done

こんな感じでしょうか?
これならPSでのポーリングでもそれほど負担にならないと
おもいます。
補足コメント
7color

お礼率 25% (2/8)

ご回答ありがとうございます。
ただ、このプロセスがあれば必ず悪さするという事でも
なく何かのタイミングで起こるようです。
ですのでCPUの負荷を検知したいのですが・・・。
投稿日時 - 2000-10-18 17:47:26


  • 回答No.2
レベル10

ベストアンサー率 66% (103/155)

かなり後ろ向きな対策ですが...。

問題のプロセスのプロセスIDが変わらないのであれば(常駐しているのであれば)、「renice +20 プロセスID」 として優先を下げてしまうというのはどうでしょう?(起動する場所がわかっていれば「/usr/bin/nice -n 20 コマンド」でもいいです。)また、root権限があれば他のプロセスの優先のほうををあげる手もあります。

csh上で「limit cputime 60」とした環境から起動すると、CPU時間に制限をつけることができます。(制限を超えるとシグナルがとんできて、何もしなければ終わります。)

いちおうSCOのUnixWareのマニュアルで確認しました。(SystemV系です。) 機種依存があるかもしれないので試す場合はマニュアルで確認してみてください。
お礼コメント
7color

お礼率 25% (2/8)

ありがとうございます。
試してみます。
投稿日時 - 0000-00-00 00:00:00
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ