アクセラと+αな生活
アクセラとα350と共に過ごす気まぐれ日記です。
Firefox ブラウザ無料ダウンロード
2017年08月
≪07月  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31    09月≫
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
普段は調子よく動いていても、特定の処理だけ遅い時があります。
そんな場合、何が問題かを調査して対応する必要がありますね。

我流ですけど、簡単に調査方法をまとめてみます。

【何がネックになっているのか?】
一口に処理が遅いといっても、原因は多種多様。。。
おもなものではCPU負荷、メモリ、ディスクのI/O、ネットワークがその原因(他の可能性もあるけど。。。)です。

まずは、何がネックになっているかあたりをつける必要があります。
よく使うコマンドとしては、top、vmstatですね。

このコマンドで、何がネックになっているのか切り分けます。


実際に top を動かすと、以下のメッセージが表示されます。
# top

top - hh:mm:ss up hh:mm, 5 users, load average: 0.82, 1.21, 0.97
Tasks: 181 total, 2 running, 179 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.9% us, 63.8% sy, 0.0% ni, 0.7% id, 7.9% wa, 10.9% hi, 9.9% si
Mem: 514268k total, 423748k used, 90520k free, 18928k buffers
Swap: 1020088k total, 48972k used, 971116k free, 258556k cached


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12899 aaaa 15 0 6144 1148 816 S 9.1 0.2 0:06.39 sshd
22281 postgres 17 0 19532 3864 3248 R 7.2 0.8 0:00.22 postmaster
2523 postgres 15 0 8640 324 276 S 6.9 0.1 0:02.29 postmaster
2527 postgres 15 0 9640 1084 220 S 5.2 0.2 0:01.75 postmaster
2528 postgres 15 0 8924 588 364 S 2.6 0.1 0:01.38 postmaster
22280 postgres 15 0 6100 1484 1216 S 2.3 0.3 0:00.07 psql
22210 postgres 17 0 4744 1432 1152 S 1.3 0.3 0:00.20 bash
2521 postgres 16 0 18860 1304 1136 S 0.7 0.3 0:01.23 postmaster
 ~ 略 ~
1549 root 16 0 1500 340 292 S 0.0 0.1 0:00.19 klogd
1569 rpc 15 0 1640 380 376 S 0.0 0.1 0:00.00 portmap

【top の情報の見方】
topは2段で表示され、上段が総括、下段がプロセス毎の詳細になります。

○CPU ネックになっていないか?
 極端なCPU負荷をかけている長期的なプロセスがないかを確認します。
 上段の「load average」の値をみることで、CPU 負荷が分かります。
 「load average」とは、一定時間に割り振られた CPU あたりのプロセス数を表します。
 通常時のサーバ負荷にもよりますが、この値が3以上の状態がずっと続いているようだと、CPU の処理能力を超えた負荷が続いており、CPU の処理が追いついていない状況であると推測されます。
 (一時的に高くなって、すぐ下がるようであれば、一時的な負荷と判断できます)

 「load average」が高い状態が続いているのであれば、下段で「%CPU」(CPU使用率)が100%に近く、「TIME+」(起動時間)が大きい(長い時間起動している)プロセスがあるかを確認しましょう。

特定のプロセスが高負荷を掛けていると判断できれば、そのプロセスごとの対応するようにして下さい。
作成したプログラムであればプログラムを直す(無駄なループがあるかなどを調査)とか、設定を変更して負荷を軽くするなど。。。
(対応方法は処理により多種多様なので、記載できません、あしからず)


○メモリを使い切っていないか?
異常にメモリを使用しているプロセスがないかを確認します。
「Mem」や「Swap」の行がメモリ、スワップの使用容量、空き容量を表していますので、free の値(空き容量)が0に近くないかを確認します。

 メモリ、スワップで 空き容量が0に近い場合、下段で「%MEM」(メモリ使用率)が高いプロセスがあるかを確認します。

特定のプロセスがメモリを大量に使用しているのであれば、そのプロセスのメモリ使用量を減らす対応をする必要があります。

全体的にメモリを使用して、メモリを使い切っている状況であれば、メモリ不足と判断できます。
この場合はメモリを増強する必要があります。



topから拾える情報はこれくらいですね。

コメント
この記事へのコメント
URL :
コメント :
パスワード :
管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
Template designed by アクセラと+αな生活

Powered by .
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。