Amazon EC2 インスタンスの CPU 消費が 6 時間おきに 100% になる現象の犯人が Webmin だった件
注意: この記事には、技術的に高度なことは何も書かれていません。むしろ、書かれているのは調べれば誰でもわかるようなことで、同じような現象に遭遇した人が調べる手間を少しでも省ければよいと思って書いています。あと、筆者は MS-DOS、Windows、旧 Mac などは実際に開発経験があるのでわりと詳しいですが、Linux には疎く、基本的なコマンドすらちゃんと覚えていません。ですから、以下の記事でも、Linux に詳しい人から見れば、もっと簡単にできることを、わざわざ遠回りしてやってる可能性もあります。そのへんご承知の上でお読み下さい。
筆者は最近 Amazon AWS 上でサーバを運用しているのだが、一つ気になる問題に気がついた。CloudWatch で EC2 インスタンスの CPU 消費量(CPUUtilization)を モニタしていると、かなり頻繁に CPU 消費量が 100% になるのだ。
最初は、実際にサーバにアクセスがあったから負荷がかかったのだろうと思っていたのだが、よくよく見ると、その負荷のかかるタイミングが妙に規則的なのだ。きっちり 6 時間おきに負荷がかかっている。つまりこんな感じだ。
これがなぜ問題かというと、うちのサーバは CPUUtilization をトリガーにして Auto Scaling をかけているので、CPU の負荷がかかるたびに EC2 インスタンスがポコポコ起動されてどんどん課金されてしまうからだ。
それでも最初の一年間は無料サービスだったのであまり気にしなかったのだが、無料期間が終わってからは、この Auto Scaling による課金がバカにならなくなってきた。
それで仕方なく本腰入れて原因調査に乗り出した。
最初に疑ったのはもちろん CRON ジョブだったが、いくら調べても 6 時間おきに起動する CRON ジョブなんてものはない。
そこで、負荷がかかる時間を見計らって、PuTTY で SSH 接続し、top コマンドでどんなプロセスが CPU を消費しているかを観察してみた。原始的な方法だが、他のやり方を知らないので仕方がない。
その結果、以下のようなプロセスが CPU を消費してることがわかった。
-
webmin
-
aptitude
-
apt-get
-
update-apt-xapi
ここから想像できるのは、
-
どうも Webmin が一枚噛んでいるらしい
-
パッケージの更新に関係があるらしい
ここまで考えて、あっとひらめいた。そういや、Webmin にはこんな表示があるじゃないか!
この数字、Webmin を開くたびに更新されてるじゃないか。ってことは、Webmin が定期的に aptitude を呼び出してるんじゃないのか?
そこで、System > Sofwtare Package Updates を開いてみた。
そして、「Module Config」をクリックすると…。
あった! こんなところに、6 の数字が…。
そしてこの数字を変更してみたところ、見事に 6 時間ごとの負荷は消え去ったのであった。
完全に盲点だったのは、Webmin なんてものはトランスペアレントに動くべきもので、その負荷が問題になるなんて完全に想定外だったこと。しかし、Webmin の負荷は意外とバカにならないのだった。もっとも、t1.micro なんて貧弱なインスタンスを使ってるせいもあるが。
というわけで、こういうくだらない問題で時間を無駄にする人が、一人でも減ることを願っております。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- Bloggerにお引越し(2019.07.03)
- WordPress じゃなくて Drupal(2015.10.10)
- 「闇ネットの住人たち」準公式サイト暫定公開(2015.10.09)
- Amazon EC2 インスタンスの CPU 消費が 6 時間おきに 100% になる現象の犯人が Webmin だった件(2014.01.08)
- 野見祐二の「ヘルベチカ・スタンダード」を Sinsy と CeVIO に歌わせてみた(2013.07.14)
コメント