Help us understand the problem. What is going on with this article?

dockerコンテナのCPU/メモリ使用率を一覧表示する

More than 1 year has passed since last update.

こんにちは。初めて投稿します。
調べ物でよくお世話になっているので、
たまには発信しようと思います。

起こっていたこと

docker+nginxで複数サイトを稼働させているのですが、
dockerホストでtopコマンドを実行したときに、
1つのapacheプロセスがCPU使用率が100%で張り付きになっていました。
UIDからdockerコンテナのどれか何だろうと言うのは察しがつきましたが、
どのコンテナなのかが分かりませんでした。

解決までの流れ

docker psでコンテナの一覧とコンテナIDを取得
 ↓
docker top <コンテナID> auxでコンテナのCPU/メモリ使用率を確認
 ↓
原因のコンテナを再起動して、解決!

コマンド

docker psでコンテナの一覧とコンテナIDが分かるものの、全台分確認するのはちょっと面倒なので、
実際はawkのワンライナーで楽をします。

for i in `docker ps | awk 'NR>=2 {print$1}'`; do echo $i; docker top $i aux | awk '{print $3,$4,$11}'; echo ""; done

全台分の%CPUと%MEMの使用率一覧が表示されるので、値が異常なコンテナを特定します。

シェルスクリプト化

再利用できるようにシェルスクリプト化しておきます。

docker_top_cpu_mem.sh
#!/bin/bash

for i in `docker ps | awk 'NR>=2 {print$1}'`; 
    do echo $i; 
    docker top $i aux | awk '{print $3,$4,$11}'; 
    echo ""; 
done

実行結果は上記コマンドと同じ。

実行結果

$ ./docker_top_cpu_mem.sh
dcc0f5ddbf03
%CPU %MEM COMMAND
0.0 1.2 apache2
0.0 0.0 apache2
0.0 1.4 apache2
0.0 1.5 apache2
0.0 1.3 apache2
0.1 1.2 apache2
0.0 1.4 apache2
0.0 1.4 apache2
0.0 1.4 apache2
0.0 1.3 apache2
0.0 1.2 apache2

…(全てのコンテナについて同様に出力される)

コンテナIDも出力しているので、
これを使ってdocker restart <コンテナID>等でコンテナを再起動して完了。

参考

docker topを使用して、コンテナで実行しているプロセスを確認する

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away