Apatchの情報を取得するためにスニペットとして保存しているワンライナーです。
ちなみにスニペットはこのソフトを愛用させていただいています。
プロセス毎のメモリの確認(VmHWM確認)
/proc/PID/statusに色々な情報があります。
こちらに纏めてくれている方がいました。
LinuxTips/プロセスを絞り込んで情報を確認したい - Void of Knowledge
Apacheのメモリを確認いしたい場合、以下のような項目があります。
/proc/PID/statusの項目 | 説明 |
---|---|
VmHWM | ある時点で使用した最大物理メモリサイズ |
VmRSS | 現在使用中の物理メモリサイズ |
VmHWMは、実メモリ上のページサイズのピーク値です。空きメモリと相談して、例えば MaxClients
や MaxRequestWorkers
の計算に利用します。Copy On Writeの動き考慮して後述のワンライナと一緒に使います。
ps aux |grep /usr/sbin/httpd |grep -v grep| awk '{print $2}' | xargs -Ixxx cat /proc/xxx/status |grep VmHWM |sort -nrk2 | awk '{print $0;sum += $2}END{print "Process Count:" "\t" NR;print "Average\t" ":" int(sum/NR/1024) " MB"; print "Total\t" ":" int(sum/1024) " MB" }'
VmHWM: 37688 kB VmHWM: 23736 kB VmHWM: 23732 kB VmHWM: 23684 kB VmHWM: 23684 kB VmHWM: 10584 kB Process Count: 6 Average :23 MB Total :139 MB
プロセス毎のメモリの確認(Copy On Write考慮)
コピーオンライトも考慮する必要あるので、[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)に載っていたPerlスクリプト shared_memory_size.pl
と同じ情報取るためのワンライナー作って、スニペット保存してあります。
printf "PID\tRSS\tSHARED\n";for pid in $(ps aux |grep /usr/sbin/httpd |grep -v grep |awk '{print $2}' |sort -r);do cat /proc/$pid/smaps | awk -v pid="$pid" 'match($1,/^Rss|^Shared_Dirty|^Shared_Clean/){sum[$1] += $2}END{print pid"\t"sum["Rss:"]"\t"sum["Shared_Dirty:"]+sum["Shared_Clean:"]"\t" int((sum["Shared_Dirty:"]+sum["Shared_Clean:"])/sum["Rss:"]*100)"%"}';done
PID RSS SHARED 932 37688 12968 34% 30087 17220 13460 78% 30086 21240 13388 63% 30029 17752 13868 78% 30001 21244 13388 63% 29992 21296 13408 62% 29985 21784 13824 63% 29984 19588 13728 70%
稼働中のApache状況を確認
稼働中のApacheの状況見たい場合に使っているワンライナー。 プロセス数やメモリ利用状況に合わせTCPの状況も一緒に見ています。
watch -n 1 "ps aux | grep /usr/sbin/httpd |grep -v grep |awk '{rss += \$6}END{print \"Average RSS(kb)\t\" \":\" int(rss/NR);print \"Total RSS(kb)\t\" \":\" rss;print \"Process Count\t\" \":\" NR }';echo "TCP State---";netstat -tan |grep \":80\\s\"| awk '{print \$6}' | sort | uniq -c;ps aux|head -n1;ps aux | grep /usr/sbin/httpd |grep -v grep"
Average RSS(kb) :20014 Total RSS(kb) :140100 Process Count :7 TCP State--- 1 LISTEN 2 SYN_RECV 55 TIME_WAIT USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND apache 29984 0.1 0.2 619984 19588 ? S 17:42 0:00 /usr/sbin/httpd apache 29985 0.1 0.2 619984 19736 ? S 17:42 0:00 /usr/sbin/httpd apache 29992 0.1 0.2 622040 21296 ? S 17:43 0:00 /usr/sbin/httpd apache 30001 0.1 0.2 619984 19196 ? S 17:43 0:00 /usr/sbin/httpd apache 30029 0.1 0.2 619992 19800 ? S 17:44 0:00 /usr/sbin/httpd apache 30086 0.0 0.2 619980 19168 ? S 17:44 0:00 /usr/sbin/httpd apache 30087 0.1 0.2 622040 21316 ? S 17:44 0:00 /usr/sbin/httpd
server-status
mod_status
有効にしてあるなら。
curl http://127.0.0.1/server-status/?auto
読み方はこの記事などを参考に。
【apache】server-status at softelメモ
ssコマンド
特にプロセス足りて無くて Recv-Q
溜まっていないかを確認する。
ss -lit '( sport = :http )';echo "----------";ss -tan '( dport = :http or sport = :http )' | awk '{print $1}' | sort | uniq -c | sort -nrk1
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::http :::* cubic rto:1000 mss:536 cwnd:10 lastsnd:1256835055 lastrcv:1256835055 lastack:1256835055 ---------- 564 TIME-WAIT 4 FIN-WAIT-2 2 SYN-RECV 1 State 1 LISTEN 1 FIN-WAIT-1 1 ESTAB