読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

負荷試験中に使ったコマンド

概要

負荷試験やサービスが重くなっている時にチェックしたほうがいい項目を挙げてみました。

環境

チェック項目

疎通できているか確認

AWSだとデフォルトだとpingが通らないのでncコマンドを使います。

$ nc -z 192.168.1.10 27017
Connection to 192.168.1.10 port 27017 [tcp/*] succeeded!

メモリの量(Total、Swap)を確認

$ free
             total       used       free     shared    buffers     cached
Mem:       2050028     169268    1880760        688      14840      64408
-/+ buffers/cache:      90020    1960008
Swap:            0          0          0
  • usedが多くてもbuffers/cachedが多ければ大丈夫
  • freeが示すのはVIRTなのでmallocJVMでのヒープ確保している分も含む
  • 一方top%MEMはRES/Totalの物理メモリなので確保が大きい場合は差がでる

チェックしたいプロセスの環境変数を確認

$ strings /proc/{pid}/environ

設定したはずの環境変数が反映されているかの確認ですね。


file descrypterの数を確認

$ cat /proc/{pid}/limits

Too many open filesと怒られないように。


現在のTCPコネクション数

$ ss -s
Total: 80 (kernel 0)
TCP:   7 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*     0         -         -        
RAW   0         0         0        
UDP   18        10        8        
TCP   7         4         3        
INET      25        14        11       
FRAG      0         0         0        

コネクション数で頭打ちになっていないかの確認。


使用可能なローカルポート数の確認

$ sudo sysctl -a | grep port_range

前述のTCPで詰まっている場合、原因となりうる部分。


現在LISTENしてるプロセス、ポート

$ sudo ss -ltp
State      Recv-Q Send-Q                                                                                                                            Local Address:Port                                                                                                                                Peer Address:Port   
LISTEN     0      128                                                                                                                                           *:52536                                                                                                                                          *:*        users:(("rpc.statd",739,8))
LISTEN     0      128                                                                                                                                           *:sunrpc                                                                                                                                         *:*        users:(("rpcbind",685,8))
LISTEN     0      128                                                                                                                                           *:ssh                                                                                                                                            *:*        users:(("sshd",1453,3))
LISTEN     0      128                                                                                                                                          :::57084                                                                                                                                         :::*        users:(("rpc.statd",739,10))
LISTEN     0      128                                                                                                                                          :::sunrpc                                                                                                                                        :::*        users:(("rpcbind",685,11))
LISTEN     0      128                                                                                                                                          :::ssh                                                                                                                                           :::*        users:(("sshd",1453,4))

topの高機能版dstat

$ sudo dstat -taplms --nocolor --top-cpu

以下簡単な説明とチェックポイント。

オプション 説明 チェックポイント
-t 時間表示 -
-a よく使うオプション詰め合わせ cpuのus, wa
-p プロセス数 blkが高いとI/Oボトルネック
-m メモリ使用率 -
-s スワップ 0じゃないとメモリ不足
-l ロードアベレージ CPU数以上だと負荷高い
--nocolor カラー表示オフ。単位をわかりやすく -
--top-cpu 一番CPU使用しているプロセス -

詳細は以下

christina04.hatenablog.com

ソース