ssコマンドは、Linuxのネットワーク/ソケット情報を確認するコマンドのひとつです。
カーネルから直接情報を取得するようで、場合によってはnetstatコマンドより高速に結果を取得することが出来ます。
以下、使いかたの例をメモしました。
ソケットのサマリ
# ss -s Total: 280 (kernel 317) TCP: 533 (estab 70, closed 438, orphaned 1, synrecv 0, timewait 437/0), ports 333 Transport Total IP IPv6 * 317 - - RAW 0 0 0 UDP 18 10 8 TCP 95 89 6 INET 113 99 14 FRAG 0 0 0
開いているポートの一覧
# ss -pl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 1000 127.0.0.1:1919 *:* users:(("haproxy",5392,8)) LISTEN 0 511 *:6399 *:* users:(("redis-server",994,5))
各プロトコルの一覧
# ss -a # ss -at //TCPソケット # ss -au //UDPソケット # ss -xa //raw socket # ss -ua //unix domian socket
TCPステータス一覧をフィルタ
# ss -t4 state [フィルタ名]フィルタ一覧
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, closing複合的なフィルタ
all – for all the states bucket – for TCP minisockets (TIME-WAIT|SYN-RECV) big – all except for minisockets connected – not closed and not listening synchronized – connected and not SYN-SENT
HTTPコネクション一覧
# ss -io '( dport = :http or sport = :http )' State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 100.120.130.140:http 219.126.105.93:40193 ts sack cubic wscale:6,7 rto:224 rtt:24.875/2.75 ato:40 cwnd:10 send 4.5Mbps rcv_rtt:32 rcv_space:14480 ESTAB 0 0 100.120.130.140:http 49.98.132.191:59430 sack cubic wscale:6,7 rto:271 rtt:71.75/17.25 ato:40 cwnd:10 send 1.6Mbps rcv_space:14600 ESTAB 0 0 100.120.130.140:http 49.98.157.170:1726 ts sack cubic wscale:10,7 rto:218 rtt:18/6.75 ato:40 cwnd:10 send 6.4Mbps rcv_rtt:18 rcv_space:14480 ESTAB 0 0 100.120.130.140:http 126.21.130.62:59925 ts sack cubic wscale:5,7 rto:558 rtt:136.25/97.75 ato:40 cwnd:11 send 819.0Kbps rcv_space:14480 ESTAB 0 0 100.120.130.140:http 119.105.216.106:57352rto, rttについては、高コネクション環境では重要な指標になります。
以下の資料が参考になります。
参考文献)
Linux SS Utility To Investigate Sockets / Network Connections
http://www.cyberciti.biz/files/ss.html
ウェブ広告のインフラについて(第5回) LinuxのTCP再送アルゴリズムとモバイルネットワークの相性の悪さ | 多脚.com
http://takyaku.com/?p=859