#■CPUのボトルネック
vmstat -n 2
⇒2秒おきに更新
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
⇒ 単位をメガで表示
ディスクキャッシュは、必要なたびに適宜開放されるので、
ディスクキャッシュ分も空きメモリとして計算してよい。
- ディスクキャッシュの強制開放するコマンド
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時間、コマンド名)