こんにちは、ちゃりおです。
一つのプロセスのメモリ使用率が高いことがありました。
なんとか解決できましたが、メモリ使用率を確認するコマンドを忘れていて
調べる時間がかかったので役立つコマンドを列挙しておきます。
linuxメモリ高負荷時に原因調査に役立つコマンド
centos/Amzonlinux2を使うことが多いため、docker上のcentos7で実行しました。
$ docker pull centos:centos7
$ docker run -it centos:centos7 /bin/bash
以下のコマンドが役立つと思います。それぞれ、解説していきます。
free -m
w
ps aux --sort rss
top
ls -l /proc/プロセスID/cwd
free -m
メモリとSwapの使用量を確認できます。
[root@11ea53199e83 /]# free -m total used free shared buff/cache available Mem: 7962 442 4654 0 2864 7272 Swap: 2047 0 2047
w
ログインしているユーザの一覧とIPアドレス、実行コマンドが確認できます。
不正なユーザや操作が行われていないか確認します。
[root@11ea53199e83 /]# w 00:02:32 up 13:52, 0 users, load average: 0.48, 0.62, 0.74 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ps aux –sort rss
メモリ使用率でソートして、実行しているプロセスを表示します。
[root@11ea53199e83 /]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 11836 3016 pts/0 Ss 00:00 0:00 /bin/bash root 19 0.0 0.0 51740 3452 pts/0 R+ 00:03 0:00 ps aux
top
実行中のプロセスをリアルタイムで表示します。
「shift + m」でメモリ使用率順に並び替えれます。
[root@11ea53199e83 /]# top top - 00:03:41 up 13:53, 0 users, load average: 0.43, 0.56, 0.71 Tasks: 2 total, 1 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.5 us, 12.2 sy, 0.0 ni, 81.9 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 8153612 total, 4765904 free, 453712 used, 2933996 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 7447200 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 11836 3016 2616 S 0.0 0.0 0:00.08 bash 20 root 20 0 56168 3760 3256 R 0.0 0.0 0:00.00 top
ls -l /proc/<プロセスID>/cwd
topやpsでメモリ使用率が高いプロセスを特定したら、より詳しい情報を見るために/proc/配下を確認します。
たとえば、cwdには「そのプロセスで現在動作しているディレクトリへのシンボリックリンク」が確認できます。
例えば、「sleep 60」が「PID 98」で動作していると、以下のようになります。
[root@11ea53199e83 /]# sleep 60 & [root@11ea53199e83 /]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 11836 3036 pts/0 Ss Dec04 0:00 /bin/bash root 98 0.0 0.0 4372 724 pts/0 S 00:07 0:00 sleep 60 root 99 0.0 0.0 51740 3540 pts/0 R+ 00:07 0:00 ps aux [root@11ea53199e83 /]# ls -l /proc/98/cwd lrwxrwxrwx 1 root root 0 Dec 5 00:07 /proc/98/cwd -> /
Red Hat Enterprise Linux 4: リファレンスガイド – 5.3. /proc/配下のディレクトリ
※参考ドキュメントrhel4と古いですが、一番わかりやすかったです
まとめ
メモリの使用率増加の原因調査に、役立つコマンドを挙げてみました。
他にも便利なコマンドがあると思うので、教えてもらえると嬉しいです。
インフラの結合テスト・負荷テストの時に使えるコマンド(CPU、メモリ、ディスク)サーバの結合テスト・負荷テストをたまに作ることがあります。
新人の頃は、何を作ればよいのか分からない状態でした。
最近作れるようにな...
【Linux】コマンドを繰り返し実行する方法こんにちは、ちゃりおです。
コマンドを繰り返し実行したいことってたまにあると思います。
DNSの設定変更して、digで切り替わっている...
Docker本 最初の一冊に「【書評】Docker/Kubernetes 実践コンテナ開発入門」こんにちは、ちゃりおです。
「Docker/Kubernetes 実践コンテナ開発入門」の書評です。
以下の人におすすめです。
...