サーバー監視ツールを作ろう – 5日目「メモリ利用率検知」

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

WEBサービスを運用していると、「サーバー監視」を重点的に行う時期があります。
 

それは、開発設計をしている時でも、サービスを構築した直後でもありません。
 

障害が発生したタイミングです。
 

サーバー障害は、誰もが不幸になる事象です。
 

そして、サーバー障害は、会社組織であれば、開発部門が責められ、開発部門からはメーカーが攻めの対象になります。
 

そんなサーバー障害にキチンと向き合い始めるのが、障害が発生した直後というのは経験者のアルアルであるとも言えます。
 

まだ、経験をしたことがないエンジニアや、AWSに任せているからサーバー障害など今後一切有り得ないと考えているサーバーエンジニアがいたとしたら、近い将来、大きな障害に巻き込まれるでしょう。
 

障害対応は知識と経験がモノを言う事を心に留めていないといけないのです。
 

そして今回は、サーバーのメモリ管理についての重要性と簡単なやり方を書いておきます。

メモリ管理は何故必要?

GBクラスが当たり前になった今の時代ですが、メモリの容量増加に伴って処理するスペックも上がってしまうため、その次代に合った最高容量を搭載するぐらいの感覚がパソコン購入の際にはちょうどいいかもしれません。
 

インターネットサーバーにおいては、メモリが足りない状態だと、swapに切り替わって、信じられないくらいの挙動が遅いサーバーに成りかねません。
 

サーバー管理者であれば、運用しているサーバーのメモリ状態を把握している必要があります。
 

コンソールなどで手作業で確認すると、そのタイミングでは、10%も使用していないが、ゴールデンタイムと言われる、夜の10時ぐらいに見てみると100%を超えているというケースは結構アルアルです。
 

定量的なアクセスがある場合は、1日の値の傾向値をロギングして、もしもオーバーしている状態が定期的なのであれば、メモリ増設や、プログラム対応による、負荷現象などを対策するべきなのです。
 

傾向値を知ることは公開サービスの品質に非常に大きく関係していることを理解しなければなりません。

サーバーのメモリ利用率を簡単に取得する方法

実際にサーバーで利用しているメモリの状態を確認するには、”free”コマンドと”vmstat”コマンドで情報収集できます。
 

 

 

メモリ値を厳密に確認したいのであれば、freeコマンドを使うのがいいでしょう。
 

このfreeコマンドは少しクセが強くて、使用率を取得する場合は、計算しないといけません。
 

まず、メモリのTOTAL値は、「Mem:」行の”total”の箇所になります。
この場合は、4135140なので、4GBぐらいということです。
 

続いて、メモリの使用領域は、「-/+ buffers/cache:」の”used”の箇所になるため、
549092になります。550MBぐらいです。
 

利用率は、使用量÷全体容量で割合を算出します。
 

 

メモリの空き率を出したい場合は、”free”の値を参照すると同じ感じでできます。
 

「Mem:」行のfreeとusedは、なんなんでしょうね???
 

そして、最近の注意ポイントとして、CentOS7では、「-/+ buffers/cache:」が表示されません。
 

CentOS7でfreeコマンドを実行すると以下のようになります。
 

 

この場合は、Mem:行のみでfree値の計算を以下のように行います。
 

 

あれ?AWSで実行したら、使用率がマイナス%になったちゃった・・・
 

 

この場合は、普通にusedとfreeの値だけを参照したほうが良いのかな????
 

難しすぎるぞLinuxのメモリ管理!!!

関連記事

サーバー監視ツールを作ろう – 4日目「ディスク容量検知」
サーバー監視ツールを作ろう – 3日目
サーバー監視ツールを作ろう – 2日目
サーバー監視ツールを作ろう – 1日目
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です