LoginSignup
26
28

More than 3 years have passed since last update.

ボトルネック判断をする時に知っておきたいこと

Last updated at Posted at 2016-08-16

■CPUのボトルネック

vmstat -n 2
⇒2秒おきに更新

スクリーンショット 2016-08-16 15.17.58.png

r列 CPU処理待ち。ここが溜まりだすと体感として遅く感じる。だいたいus,syの値も高くなる。
b列 ブロック中。ファイルIOが多い場合に発生しページングが発生している可能性がある。

us+sy = 80〜90%ならCPUがボトルネックの可能性大

us(ユーザプロセス)が高い場合は、CPU負荷の高いアプリケーションが動いてないか

sy(カーネル処理)が高い場合は、ディスクIOやネットワーク通信に伴う処理の負荷

※CPU利用率(us+sy)が高くても、CPU待ち(proc r)が少ない場合は、体感速度的には、遅く感じないはず。

※下記単位は、Kバイト
free 空きメモリの容量
buff バッファに利用されているメモリ量
cache キャッシュに利用されているメモリ量

■ディスクIO

wa(IO待ち時間) 、 procs b(IO待ちプロセス)が高い場合はディスクIOがボトルネックの可能性大

■メモリ使用量

free -m
⇒ 単位をメガで表示

スクリーンショット 2016-08-16 15.18.04.png

ディスクキャッシュは、必要なたびに適宜開放されるので、

ディスクキャッシュ分も空きメモリとして計算してよい。

  • ディスクキャッシュの強制開放するコマンド

echo 3 > /proc/sys/vm/drop_caches

その上で、freeコマンドで確認する。

スワップイン/スワップアウトの値を確認する。

  • IOの根深いキャッシュ:デントリーキャッシュの確認と削除

slabtop -o | grep dentry
56939140 56939107 24% 0.19K 2846957 20 11387828K dentry

echo 2 > /proc/sys/vm/drop_caches

※カーネルでもつファイル参照やフォルダ参照のキャッシュのこと

■プロセスの確認

・topコマンドを使った分析

top -b -n 10 -d 60 > output.txt

※60秒間隔で10回分の出力をファイルに書き出す

・HTTPコネクション数のカウント
netstat -an |grep ESTABLISHED | grep :80 | wc -l

・HTTPプロセス数のカウント
ps -aef | grep httpd | grep -v grep | wc -l

・PHPプロセス数のカウント
ps aux | grep php | awk '{sum += $6}END{print sum}'

・Nginxプロセス数のカウント
ps aux | grep nginx | awk '{sum += $6}END{print sum}'

・MySQLプロセスが利用しているメモリ
ps aux | grep mysqld | awk '{sum += $6}END{print sum}'

・CPU使用率の高い順
ps -ae -o pid,pcpu,rss,time,cmd --sort=-pcpu
(プロセスID、CPU利用率、メモリ利用率、CPU時間、コマンド名)

★こちらも
http://qiita.com/yuse/items/1d398b34b812d5505aae

26
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
28