こんにちは、サイオステクノロジーの荒俣です。
先日、このサーバと同様にブログ運営しているサーバにおいてメモリ使用率が、多くなっているとアラートが出ていました。
実際に、調査してみると最高でも50%前後ですむサーバなのに、80%ぐらいまで上昇していました。
1.犯人は?
このような状態になったのは、ブログへのアクセス増加によりhttpsプロセスなどのメモリ使用率が増加しているためと考えていたのですが、
topコマンドですぐにタイトルの通り、Azure Linux エージェント (waagent) がメモリを大量消費していたためと、わかりました。
その後、アラートが出る1か月前から、徐々にメモリ使用率が上がっていることもわかりました。
2.Azure Linux エージェントとは
今回、メモリを大量消費していたAzure Linux エージェントですが、あまり知らない方もいるかと思いますので、簡単にご紹介します。
Azure Linux エージェント (waagent) はLinuxのプロビジョニングとその後の管理を行ってくれます。
基本、AzureでLinuxマシンを作成した場合は、インストールされていますし、自動起動になっています。(WindowsマシンにもちゃんとWindows版のエージェントがインストールされています。)
ちなみに、このエージェントがインストールしてあり、起動していることが前提となっているAzureの機能があることを確認していますので、アンインストール・停止はしない方がよさそうです。
3.なぜ、メモリの使用率が増えたのか
普段は、Azure Linux エージェントのメモリ使用率は、サーバ機能に支障がない範囲に収まるようになっています。
なので、MSサポートに現状の状態とログを提出し、調査していただきました。
結論から言うと直接の原因はMSにもわからないというのが、MSサポートからの回答でした。(事象発生から1か月放置していたので、仕方がないと思います。)
ただ、過去のエージェントのバージョンの中には、メモリーリークを引き起こす不具合を抱えているものがあると、報告されました。
今回のエージェントは問題のバージョンではなかったですが、、、
4.対処法
サービスを再起動することが対処法のようです。
以下のコマンドで、再起動することでメモリの使用率が低下します。
systemctl restart waagent.service
ただ、暫定対応に過ぎないので、エージェントのバージョンを最新版にバージョンアップします。
MSからもエージェントが最新版であることが推奨されています。
以下にバージョンアップ手順を紹介します。本手順はCentOS及びRHELの手順になります。
まず、インストールされているエージェントのバージョンを確認します。
sudo yum list WALinuxAgent
バージョンアップ可能な更新プログラムを確認します。
sudo yum check-update WALinuxAgent
最新版のパッケージをインストールします。
sudo yum install WALinuxAgent
これで、最新版にバージョンアップできましたが、リリースされるたびの対応が煩わしい場合、
以下の設定で、自動更新を行うことができます。
現在の設定を確認します。
cat /etc/waagent.conf | grep AutoUpdate.Enabled
設定されていれば以下の出力があります。
AutoUpdate.Enabled=y
設定されていない場合、以下の設定を/etc/waagent.confに追加することで、自動更新を有効にできます。
AutoUpdate.Enabled=y
設定変更後、一度サービスを再起動します。
systemctl restart waagent.service
5.最後に
今回は、Azure Linux エージェントによる不具合とその対処法についてご紹介しました。
皆さんも、クラウド上の仮想マシンで不具合が生じた際は自身が構築した部分だけでなく、クラウドサービス特有の原因を探ることを忘れないでください。
Azure Linux エージェントは普段あまり意識していないせいか、バージョンが古くなりがちです。
しかし、いざ不具合発生して、Azureのサポート・サービスを使用した際に、エージェントのバージョンが、、
といわれるのは悲しすぎるので、都度対応することをお勧めします。
非常に参考になりました。
一点ご質問させていただきたいのですが、waagent をバージョンアップすることで事象は再発しなくなったのでしょうか。
閲覧いただきありがとうございます。
荒俣です。
ご質問対する回答なのですが、「今のところ」は発生していないという形になります。
本文中に記載されている不具合は現在のバージョンでは、修正されております。
しかし、修正された部分とは別の要因での不具合が発生してしまうこともあります。
不具合を確認次第、MSも修正してくれますので更新を待ってください。
これで、回答になっておりますでしょうか。
早速のご回答ありがとうございます。
はい、非常に助かります。
ちなみに「AutoUpdate.Enabled=y」はデフォルト設定なしでしょうか。
saito様
追加のご質問に対する回答になりますが、CentOSではデフォルトでOFFとなっております。
そのため、自動更新を利用するためには、OS毎の手順で設定を有効化する必要があります。
MS公式ドキュメントをご参照ください。
各LinuxOS毎のアップデート手順
また、手順通りにはいかない場合がある箇所がありますので、補足させていただきます。
手順内には、sedコマンドなどの置換にて設定変更を行っていますが、現在のwaagentのバージョンが古い場合、
設定ファイル内にそもそも設定項目が存在しないケースがございます。
その場合は、ファイル最後尾に追記する形で記載ください。
もし、他に何かご不明な点があれば、またご連絡頂ければと思います。
今後とも本ブログを宜しくお願い申し上げます。
度々ご丁寧にご対応いただきありがとうございます。
承知いたしました。