Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

サーバーの利用状況を確認したい。

概要

ある意味、自分用メモ。DB周りのお仕事をしていると、「ちょっとデータベースの挙動が遅いんだけど見てくんない?」みたいなことを言われます。残念なことに、何が遅いのか、いつ遅いのか、どのように遅いのか、なぜ遅いのか、などは聞いても明確な答えは帰ってきません。彼らも分からないから答えられないのです。

環境

調査してみる

とりあえずデータベースが遅いと言われても、データベースが遅くなかったりします。大体サーバーまたはネットワークの調子が悪いせいだったりします。

サーバーの状況調査

メモリ枯渇を疑う

sar -W 1

で、スワップの発生状況を確認します。終了するときは「Ctrl+C」です。

free -m

でメモリの使用率を確認します。空き領域を示す「free」が0に近くても慌てない。「buff/chache」も「free」と合わせて確認します。両方0に近かったらメモリ枯渇を疑います。

メモリ枯渇を疑ったら、メモリを大量に消費しているプロセスがないかを確認します。

・メモリの大量に消費しているプロセスがあった -> そのプログラムを作ったプログラマを問い詰めてもらうようにします。 ・メモリを大量に消費しているプロセスがなかった -> メモリが足りないのでサーバー管理者に丸投げします。

CPU使用率を確認する。

top

でCPUの使用率とかその他諸々を確認できます。結果をファイルに出力したい場合は

top -d 1 -b > top_result.txt

にすると良いでしょう。grepなんかで結果を絞った方がもっとよいでしょう。

topコマンドの結果からCPU使用率とかが分かります。一番分かりやすいと思うのが「load average」ですね。一つのプロセスでCPUを100%利用しているときは、ロードアベレージが1になるようです。二つのプロセスでCPUを100%利用していると、ロードアベレージが2。つまりはロードアベレージが1を超えるとヤバイって話です。

ディスクIOを確認する。

sar -b 1

で確認します。終了するときはやっぱり「Ctrl+C」です。

最後に

なぜ人は全部データベースのせいにしたがるんだろう。