50プロセス管理(CentOS7)
Linuxマシンが突然遅くなった感じたら.....
・メモリーの使用率チェック
・CPUの利用状況チェック
●メモリーの状況確認(静的)
基本形 現在使用されているメモリーjの状況一覧表示する
free [オプション]
-m MByte単位で表示する
[guest@aso ~]$ free -m
total used free shared buff/cache available
Mem: 1520 111 1290 19 117 1267
Swap: 1039 0 1039
[guest@aso ~]$
●CPUの利用状況確認(静的)
基本形 現在実行されているプロセスを一覧表示する
ps [オプション]
a 自分以外のユーザのプロセスも表示する
u ユーザ名と開始時刻を表示する
x 制御端末のないプロセスも表示する
PID プロセスID
VSZ 仮想メモリのサイズ
RSS 使用中の物理メモリ量
TTY 制御端末
[guest@aso ~]$ ps aux | head ← 最初の10行しか表示していません
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.2 125468 3872 ? Ss 15:47 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 15:47 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 15:47 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 15:47 0:00 [kworker/u2:0]
root 6 0.0 0.0 0 0 ? S 15:47 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 15:47 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 15:47 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 15:47 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 15:47 0:00 [lru-add-drain]
[guest@aso ~]$
●freeとpsの内容をまとめて動的に表示する
基本形 プロセスの一覧を逐次監視する
top [オプション]
-d秒 表示を更新する間隔(デフォルト3秒)
-uユーザ名 指定したユーザのプロセスのみ表示する
-pプロセスID 指定したプロセスIDのプロセスのみ表示する(複数指定可能)
$ top -d 1 1秒間隔表示で使うとよい
q で終了させます
① ② ③ ④
top - 15:21:24 up 5:17, 2 users, load average: 0.00, 0.00, 0.00
⑤ Tasks: 138 total, 1 running, 137 sleeping, 0 stopped, 0 zombie
⑥ Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
⑦ Mem: 1403512k total, 1109428k used, 294084k free, 85424k buffers
⑧ Swap: 2097144k total, 0k used, 2097144k free, 700628k cached
⑨ ⑩ ⑪ ⑫ ⑬
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
179 root 20 0 0 0 0 S 0.3 0.0 0:06.38 scsi_eh_1
1 root 20 0 19352 1500 1188 S 0.0 0.1 0:01.11 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.36 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.50 watchdog/0
7 root 20 0 0 0 0 S 0.0 0.0 0:06.26 events/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
13 root 20 0 0 0 0 S 0.0 0.0 0:00.14 sync_supers
14 root 20 0 0 0 0 S 0.0 0.0 0:00.15 bdi-default
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
16 root 20 0 0 0 0 S 0.0 0.0 0:01.70 kblockd/0
①現在時刻
②システムが起動してからの経過時間
③ユーザ数
④CPU負荷(1分間,5分間,15分間の平均)
⑤プロセスの実行状況
⑥CPUの利用状況
⑦メモリの利用状況
⑧スワップの利用状況
⑨仮想メモリ(KB)
⑩実メモリ(KB)
⑪CPU使用率
⑫メモリ使用率
⑬CPU時間
【注目】
④load average 平均して何個分の仕事があるかということ
CPUのコア数と合わせて見る
load average ≧ CPUコア数
デュアルコア(×2)の時は2以上が過負荷
クアッドコア(×4)の時は4以上は過負荷
⑪⑬CPU負荷と時間 使用率が高く、長時間動いているプロセスは怪しい
⑫メモリ使用率の高いプロセスは怪しい
④load averageが高く⑪CPU使用率が低い 状況はDisk/IOの負荷がかかりすぎ
(つまりSWAP過剰の状態の可能性が高い)
○ topコマンド実行中に「1」キーを押下することで、CPU全体でサマリーされていた使用率をコアごとに表示させることができる。
○ 表示されているプロセスをソートする場合は、ソートする内容に応じて、実行画面上で以下のようにキーを押下する。
○ 負荷試験を行うyesコマンド
yesコマンドはひたすらyを標準出力するコマンド yes "引数テキスト" で引数テキストをひたすら出力可能
これをひたすらnullデバイスにリダイレクトするとCPUに負荷がかかる
[root@inspiron ~]# yes > /dev/null &
[11] 2344
[root@inspiron ~]#
何回か実行しながらtopコマンドでCPUの状況を確認してみる
過負荷になるとデスクトップログイン等が遅くなる!!
topコマンド実行中に「k」キーを実行することで、指定したPIDのプロセスをkillすることが出来る。
●過負荷時の対処法
怪しいプロセスは終了させましょう
基本形 指定したプロセスにシグナルを送り終了させる
kill [-s シグナル] pid
-SIGTERM プログラム内に実装された終了処理を実行する
-SIGKILL 強制終了させる(ファイルが壊れる可能性あり)
以上2つのオプションで終了できないときは最終手段としてオプションなしで実行する!!