第1回 減り続けるメモリ残量! 果たしてその原因は!?

高田 哲生
NTT OSSセンタ
2008/10/1

 NTTグループの各社で鳴らした俺たちLinuxトラブルシューティング探偵団は、各社で培ったOSS関連技術を手に、NTT OSSセンタに集められた。普段は基本的にNTTグループのみを相手に活動しているが、それだけで終わる俺たちじゃあない。

  ソースコードさえあればどんなトラブルでも解決する命知らず、不可能を可能にし、多くのバグを粉砕する、俺たちLinuxトラブルシューティング探偵団! 助けを借りたいときは、いつでもいってくれ!

OS:高田哲生
俺はリーダー、高田哲生。Linuxの達人。俺のようにソースコードレベルでOSを理解している人間でなければ、百戦錬磨のLinuxトラブルシューティング探偵団のリーダーは務まらん。

Web:福山義仁
俺は、福山義仁。Web技術の達人さ。ApacheのようなWebサーバからTomcat、JBossみたいなJava、アプリケーション技術まで、何でも問題を解決してみせるぜ。

DBMS:下垣徹
下垣徹。PostgreSQLの達人だ。開発からサポートまで何でもやってみせらぁ。でも某商用DBMSだけは勘弁な。

HA:田中 崇幸
よぉ! お待ちどう。俺さまこそHAエキスパート。Heartbeatを使ってクラスタを構成する腕は天下一品! HAが好きなんて奇人? 変人? だから何? HaHaHaHa!!

 前回ですべてのメンバーが登場し、連載は終わったかに見えた……が、まだまだ戦いはこれからだぜ! みんな、もう少しついてきてくれ!

関連記事:
連載記事 「Linuxトラブルシューティング探偵団」
http://www.atmarkit.co.jp/flinux/index/indexfiles/tsindex.html

切り分けの難しいメモリのお話

 システムに障害が発生した場合、うまく切り分けができるかどうかは重要なポイントです。切り分けによって、障害の原因が絞り込まれていき、誰が解決すべき問題なのかということが明確化されます。切り分けに失敗すると、無駄に人、お金、そして何より時間が浪費されてしまいます。

 切り分けが難しい分野として、メモリ関連のトラブルがあります。メモリ関連のトラブルは多く、私たちが取り扱うOS関連問い合わせの中でも2〜3割程度を占めています。

 その理由としては、メモリに関する理解度の低さが挙げられます。メモリがどのように使用されているのかを理解するには、OSやglibcなどのライブラリの動作をある程度分かっていなければいけないのですが、実際はアプリケーションとの間にJava層やPerl層などのライブラリ群があり、全貌(ぜんぼう)を理解するのは困難です。

 この複雑さに起因して、問題はアプリケーション、ミドルウェア、OS、ハードウェアのすべてに関係し、容疑者が多くなってしまいます。これが、切り分けを難しくする状況の原因になっていると思います。

 さて、今回から数回にわたって、とあるメモリ関連の問い合わせから発展していった案件を1つ紹介します。

 事件の発端、それは「freeコマンドで見ているとメモリ空き容量がどんどん減っていくのだが、これはどういうことか?」という問い合わせでした。このたぐいの問い合わせは多く、たいていはとある「誤解」がもとになっています。

 そこでまずはその誤解を解くべく、次に示すような回答を返すことにしました。そのときは、これが長く続く案件のプレリュードにすぎなかったとは知るよしもありませんでした……。

■コラム さまざまなメモリ監視コマンド

 今回取り上げているfreeというコマンド。かなり古くから存在するのですが、Linuxを含めた最近のUNIX系システムには、メモリ監視に利用できるコマンドがいろいろとあります。

 メモリを監視する目的には大きく分けて以下の2つがあります。

1. システム監視

 システム全体の監視を目的とします。物理メモリ量が足りているか、swapが発生していないか、カーネルのメモリリークが発生していないかなどを監視します。システム運用中にメインとなるのはこちらの監視でしょう。

2. プロセス監視

 各プロセスの監視を目的とします。ユーザープロセスのメモリリークが発生していないかを確認するために使用します。こちらは主に開発中に活躍しますが、システム運用中にも念のため取得しておき、1のシステム監視で異常を検知した場合に利用するとよいでしょう。

 それぞれ、代表選手を挙げておきます。

目的 名称 特徴
システム監視
free
簡易にメモリ使用状況を把握できます。本連載でも述べていますが、出力内容に若干問題があります。
vmstat
メモリ使用状況以外にも CPU 使用率の把握などさまざまな用途に利用可能です。単体ではタイムスタンプ出力機能がなく、指定できる更新間隔も高負荷時にはあてにならないことが欠点と言えます。
sar
最も取得情報量が多いコマンドです。ただ、Active/Inactive(本記事内で後述)が取得できないなど、出力内容は若干柔軟性に欠け、メモリ監視という観点ではvmstatに一歩譲るようです。
プロセス監視
top
管理者がリアルタイムにシステム状況を見るのに適したツールです。ソート機能や更新頻度変更などいろいろな機能があるので、top画面表示中に「h」か「?」を押して確認するとよいです。システム監視用にログを取得するには、バッチモード(-bオプション)が利用可能です。
ps
topと同様、リアルタイムでシステム状況を監視するのに適したツールです。Linux版には互換性保持のため多くのコマンドオプションが存在し、育った文化によってどのオプションを使うかが分かれます。ちなみに私は「aux」オプション派。

前の連載へ
1/3

Index
Linuxトラブルシューティング探偵団 番外編
 第1回 減り続けるメモリ残量! 果たしてその原因は!?
Page 1
切り分けの難しいメモリのお話
コラム さまざまなメモリ監視コマンド
  Page 2
物理メモリ利用状況の監視にfreeコマンドってどうなの?
利用可能な物理メモリ量をfreeを使って計算する方法は?
  Page 3
物理メモリ使用状況の把握には何を使う?
ここまでのまとめと次回予告
コラム いつまでもページキャッシュが解放されないことが不満なあなたへ

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH