天天看點

ss is one another utility to investigate sockets(特适合大規模tcp連結)

他的最大特點是快, 當你的系統有上萬個tcp連結要了解的時候的時候, 你就知道我說什麼了. netstat等正常工具變成廢鐵了, 這時候他的作用就非常明顯了.

<code>/proc</code> interface is inadequate, unfortunately. When amount of sockets is enough large, <code>netstat</code> or even plain <code>cat /proc/net/tcp/</code> cause nothing but pains and curses. In linux-2.4 the desease became worse: even if amount of sockets is small reading <code>/proc/net/tcp/</code> is slow enough. This utility presents a new approach, which is supposed to scale well. I am not going to describe technical details here and will concentrate on description of the command. The only important thing to say is that it is not so bad idea to load module <code>tcp_diag</code>, which can be found in directory <code>Modules</code> of <code>iproute2</code>. If you do not make this <code>ss</code> will work, but it falls back to <code>/proc</code> and becomes slow like <code>netstat</code>, well, a bit faster yet (see section “Some numbers”).

從技術上講, 它主要是通過/proc來擷取各種各樣的統計資訊. 特别是當處理tcp的時候用到了, tcp_diag功能. tcp_diag是tcp協定棧用于診斷和統計的一個子產品, 用netfilter來擷取第一手的資訊的.  ss就用到了這個技術, 保證了資訊的快捷擷取.

這個軟體是隸屬于iproute包的,  如果你的系統沒有的話可以這樣安裝:

<a href="http://writeblog.csdn.net/#viewSource">view source</a>

<code>1</code>

<code>apt-get  -y</code><code>install</code> <code>iproute</code>

用它可以了解下協定棧占用的記憶體, 每個連結的隊列使用情況, 每個連結屬于哪個程序.

而之前唯一能用的就是:

<code>watch</code> <code>-n  1</code><code>'cat /proc/net/sockstat'</code>

下面簡單介紹下他的使用:

<code>01</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss --help</code>

<code>02</code>

<code>Usage: ss [ OPTIONS ]</code>

<code>03</code>

<code>ss [ OPTIONS ] [ FILTER ]</code>

<code>04</code>

<code>-h, --help           this message</code>

<code>05</code>

<code>-V, --version        output version information</code>

<code>06</code>

<code>-n, --numeric        don't resolve service names</code>

<code>07</code>

<code>-r, --resolve       resolve host names</code>

<code>08</code>

<code>-a, --all            display all sockets</code>

<code>09</code>

<code>-l, --listening      display listening sockets</code>

<code>10</code>

<code>-o, --options       show timer information</code>

<code>11</code>

<code>-e, --extended      show detailed socket information</code>

<code>12</code>

<code>-m, --memory        show socket memory usage</code>

<code>13</code>

<code>-p, --processes      show process using socket</code>

<code>14</code>

<code>-i, --info           show internal TCP information</code>

<code>15</code>

<code>-s, --summary        show socket usage summary</code>

<code>16</code>

<code> </code> 

<code>17</code>

<code>-4, --ipv4          display only IP version 4 sockets</code>

<code>18</code>

<code>-6, --ipv6          display only IP version 6 sockets</code>

<code>19</code>

<code>-0, --packet display PACKET sockets</code>

<code>20</code>

<code>-t, --tcp            display only TCP sockets</code>

<code>21</code>

<code>-u, --udp            display only UDP sockets</code>

<code>22</code>

<code>-d, --dccp           display only DCCP sockets</code>

<code>23</code>

<code>-w, --raw            display only RAW sockets</code>

<code>24</code>

<code>-x, --unix           display only Unix domain sockets</code>

<code>25</code>

<code>-f, --family=FAMILY display sockets of</code><code>type</code> <code>FAMILY</code>

<code>26</code>

<code>27</code>

<code>-A, --query=QUERY</code>

<code>28</code>

<code>QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]</code>

<code>29</code>

<code>30</code>

<code>-F, --filter=FILE  </code><code>read</code> <code>filter information from FILE</code>

<code>31</code>

<code>FILTER := [ state TCP-STATE ] [ EXPRESSION ]</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -s</code>

<code>Total: 750 (kernel 761)</code>

<code>TCP:   21 (estab 7, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0</code>

<code>Transport Total     IP        IPv6</code>

<code>*         761       -         -</code>

<code>RAW       0         0         0</code>

<code>UDP       3         3         0</code>

<code>TCP       21        18        3</code>

<code>INET      24        21        3</code>

<code>FRAG      0         0         0</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -t -m</code>

<code>State       Recv-Q Send-Q                                                                     Local Address:Port                                                                         Peer Address:Port</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4251</code>

<code>mem:(r0,w0,f4096,t0)</code>

<code>CLOSE-WAIT  38     0                                                                        192.168.235.147:13910                                                                        174.36.30.67:https</code>

<code>mem:(r672,w0,f3424,t0)</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4635</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:54620</code>

<code>mem:(r0,w0,f0,t0)</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:1095</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:44234</code>

<code>ESTAB       0      0                                                                              127.0.0.1:54620                                                                           127.0.0.1:4369</code>

<code>ESTAB       0      0                                                                              127.0.0.1:44234                                                                           127.0.0.1:4369</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -p</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4251    </code><code>users</code><code>:((</code><code>"sshd"</code><code>,8373,3))</code>

<code>CLOSE-WAIT  38     0                                                                        192.168.235.147:13910                                                                        174.36.30.67:https   </code><code>users</code><code>:((</code><code>"dropbox"</code><code>,2674,13))</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4635    </code><code>users</code><code>:((</code><code>"sshd"</code><code>,350,3))</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:54620   </code><code>users</code><code>:((</code><code>"epmd"</code><code>,28338,5))</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:1095    </code><code>users</code><code>:((</code><code>"sshd"</code><code>,29044,3))</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:44234   </code><code>users</code><code>:((</code><code>"epmd"</code><code>,28338,4))</code>

<code>ESTAB       0      0                                                                              127.0.0.1:54620                                                                           127.0.0.1:4369    </code><code>users</code><code>:((</code><code>"beam.smp"</code><code>,25947,11))</code>

<code>ESTAB       0      0                                                                              127.0.0.1:44234                                                                           127.0.0.1:4369    </code><code>users</code><code>:((</code><code>"inet_gethost"</code><code>,23783,8),(</code><code>"inet_gethost"</code><code>,23784,8))</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -i</code>

<code>cubic rto:396 rtt:124.5/66 ato:40 cwnd:4 send 375.3Kbps rcv_rtt:296456 rcv_space:66472</code>

<code>cubic wscale:7,9 rto:612 rtt:256/52 ato:40 cwnd:5 send 213.8Kbps rcv_rtt:259 rcv_space:5840</code>

<code>cubic rto:356 rtt:144/33 ato:40 cwnd:4 send 324.4Kbps rcv_rtt:511258 rcv_space:46760</code>

<code>cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32768</code>

<code>cubic rto:232 rtt:21/18 ato:40 cwnd:5 ssthresh:4 send 2.8Mbps rcv_rtt:173516 rcv_space:118904</code>

<code>cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32792</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -e</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4251     timer:(keepalive,50min,0) ino:1843366 sk:c2ea2600</code>

<code>CLOSE-WAIT  38     0                                                                        192.168.235.147:13910                                                                        174.36.30.67:https    ino:12200 sk:c2ea2140</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4635     timer:(keepalive,2min59sec,0) ino:1101514 sk:c2ea4740</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:54620    ino:2309430 sk:c2ea2ac0</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:1095     timer:(keepalive,6min59sec,0) ino:379842 sk:c2f4af80</code>

<code>ESTAB       0      0                                                                              127.0.0.1:4369                                                                            127.0.0.1:44234    ino:2044745 sk:c2ea3440</code>

<code>ESTAB       0      0                                                                              127.0.0.1:54620                                                                           127.0.0.1:4369     ino:2309429 sk:c2ea7200</code>

<code>ESTAB       0      0                                                                              127.0.0.1:44234                                                                           127.0.0.1:4369     ino:2044744 sk:c2ea1300</code>

<code>root@ubuntu:/usr/src/iproute-20090324/misc</code><code># ss -o</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4251     timer:(keepalive,50min,0)</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:4635     timer:(keepalive,2min50sec,0)</code>

<code>ESTAB       0      0                                                                        192.168.235.147:</code><code>ssh</code>                                                                       <code>192.168.235.155:1095     timer:(keepalive,6min50sec,0)</code>

Have fun!!!

繼續閱讀