cronとawkでCPU負荷の高い暴走プロセスを自動で監視&Killする

わたくしごと

わたくし の こと と書いて私事ですが、一獲千金狙った新サイトのリリースと

暗号通貨こと仮想通貨(主にビットコインとモナコイン)の自動売買プログラムが完成しまして

封印していた楽しいブログの時間がようやく復活したわけなのです

とは言へいきなり2時間も3時間もかかるような記事書いたらブログとAKBを嫌いになってしまいそうなので、30分程度で書き終わりそうな小ネタを使ってリハビリがてら投稿してみたいと思います

以上、わたくし の こと と書いて私事でした

php-fpmプロセスが暴走!!

前述の新サイトと仮想通貨ビットコインの自動売買プログラム、そしてこのブログを動かしてるレンタルサーバーのphp-fpmが定期的に暴走してCPUを1人で100%専有する事件が発生

幸いJetPackさんが「お前んとこのサーバ-落ちてるで」と教えてくれるので都度手動でプロセスを落としてたのですが、

さすがにいつまでもこの状態はよろしくないと、

私だって常にSSHばーん!とできるわけではないですし、

重い尻をとうとう上げて、時折暴走するphp-fpmプロセスを定期的に監視して必要に応じてKillする仕組みを作ることにしました

名付けて「時折暴走するphp-fpmプロセスを定期的に監視して必要に応じてKillする仕組みを作る大作成」です

cronとtopとawkコマンドの組み合わせで行けそう

Topコマンドをgrepしてawkにパイプで渡してあげればいけそうだ

実際のコマンドはこちら

top -b -n 3 -p $(pgrep -d’,’ php-fpm) | awk ‘$12 == “php-fpm” && $9 > 98 {print “kill -9”, $1}’ | sh

awk以下の部分は$9にCPU使用率、$12にコマンド名、$1にプロセスIDが入ってます

最初top実行は1回だけだったのですが、このコマンド実行した瞬間だけ負荷が閾値の98より下回るというphp-fpmのいやらしい動きに対抗するためtopを3回実行したり、

プロセスじゃない余計な行が入り込んだりで思考錯誤してたらこんなんなりました

事後は良好

3日くらい様子を見てますが、Killしてはいけない何かをKillして顔面がブルーレイになったりとか、

KillしたつもりがKillできてなくてphp-fpmパラダイスになっていたりとか、

なんてなこともなくスクリプトは順調に仕事をしてくれています

ビットコインのトレードを自動にした時も感じましたが、

自動化最高!!

むしろなんで今迄やらなかったんだろうと不思議でなりません。まあ、喉元過ぎちゃえば人間って言いたいこと言うそんなもんですよね。

今年は自動化がテーマの一つになりそうですね

皆様も興味がございましたらこれを機に、プログラムやエクセルのマクロなど、自動化に挑戦してみてはいかがでしょうか

興味無いですか?

そうですか。

それではまた次回!

コメント

タイトルとURLをコピーしました