zoukankan      html  css  js  c++  java
  • netstat -ano或tunlp socket过多,会缓慢

    ss是iproute2工具包中的工具。
    ss is used to dump socket statistics. It allows showing information similar to netstat.  It can display more TCP and state informations than other tools.
    1. 为什么用ss替换netstat?    
    这要从netstat的先天缺陷说起,netstat通过遍历proc来获取socket信息,当socket数据上万后,netstat的输出就非常耗时(用过的都知道)
    而与之不同的ss使用netlink与内核tcp_diag模块通信获取socket信息。
    2.ss命令输出解释之Recv-Q Send-Q
    先来看一下ss的输出:
    tingw:~ # ss -at
    State       Recv-Q Send-Q                                            Local Address:Port                                                Peer Address:Port   
    LISTEN      0      128                                                          :::sunrpc                                                        :::*       
    LISTEN      0      128                                                           *:sunrpc                                                         *:*       
    LISTEN      0      128                                                          :::http                                                          :::*       
    LISTEN      0      128                                                   127.0.0.1:ipp                                                            *:*       
    LISTEN      0      128                                                         ::1:ipp                                                           :::*       
    LISTEN      0      100                                                         ::1:smtp                                                          :::*       
    LISTEN      0      100                                                   127.0.0.1:smtp                                                           *:*       
    LISTEN      0      64                                                           :::59642                                                         :::*       
    LISTEN      0      128                                                           *:54107                                                          *:*       
    LISTEN      0      128                                                          :::xinupageserver                                                       :::*       
    LISTEN      0      128                                                           *:xinupageserver                                                        *:*       
    LISTEN      0      64                                                            *:50341                                                          *:*       
    LISTEN      0      50                                                            *:mysql                                                          *:*       
    ESTAB       0      52                                                  192.168.0.1:xinupageserver                                             192.168.0.96:50599  

    输出所有的tcp socket信息。
    第一列表示tcp socket的状态,第二列和第三列的内容与socket所处的状态有关,查看tcp_diag代码

     

    处于LISTEN状态的socket,Recv-Q表示了current listen backlog队列元素数目(等待用户调用accept的完成3次握手的socket),而Send-Q表示了listen socket最大能容纳的backlog。这个数目由listen时指定,且不能大于 /proc/sys/net/ipv4/tcp_max_syn_backlog;对于非LISTEN socket,Recv-Q表示了receive queue中的字节数目(等待接收的下一个tcp段的序号-尚未从内核空间copy到用户空间的段最前面的一个序号);Send-Q表示发送queue中容纳的字节数(已加入发送队列中最后一个序号-输出段中最早一个未确认的序号)
    3.ss命令输出解释之timer

    linux-19:~ # ss -a -t -o -4
    State       Recv-Q Send-Q                                            Local Address:Port                                                Peer Address:Port   
    LISTEN      0      128                                                           *:sunrpc                                                         *:*       
    LISTEN      0      128                                                           *:47093                                                          *:*       
    LISTEN      0      3                                                  192.168.86.1:domain                                                         *:*       
    LISTEN      0      3                                                  192.168.0.86:domain                                                         *:*       
    LISTEN      0      3                                                    10.0.64.19:domain                                                         *:*       
    LISTEN      0      3                                                 192.168.100.3:domain                                                         *:*       
    LISTEN      0      3                                                172.16.132.189:domain                                                         *:*       
    LISTEN      0      3                                                     127.0.0.2:domain                                                         *:*       
    LISTEN      0      3                                                     127.0.0.1:domain                                                         *:*       
    LISTEN      0      128                                                           *:ssh                                                            *:*       
    LISTEN      0      128                                                   127.0.0.1:ipp                                                            *:*       
    LISTEN      0      100                                                           *:smtp                                                           *:*       
    LISTEN      0      128                                                   127.0.0.1:953                                                            *:*       
    LISTEN      0      64                                                            *:33914                                                          *:*       
    LISTEN      0      64                                                            *:nfs                                                            *:*       
    LISTEN      0      128                                                           *:35659                                                          *:*       
    LISTEN      0      128                                                           *:remotefs                                                        *:*       
    LISTEN      0      128                                                  10.0.64.19:6380                                                           *:*       
    LISTEN      0      128                                                           *:openvms-sysipc                                                        *:*       
    ESTAB       0      0                                                172.16.132.189:ssh                                                172.16.132.93:hs-port  timer:(keepalive,65min,0)
    ESTAB       0      0                                                    10.0.64.19:35225                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:46617                                                10.0.64.107:61616   
    ESTAB       0      0                                                    10.0.64.19:openvms-sysipc                                                10.0.64.2:videotex 
    ESTAB       0      0                                                    10.0.64.19:49462                                                10.0.64.107:61616   
    ESTAB       0      0                                                172.16.132.189:ssh                                                172.16.132.85:63934    timer:(keepalive,38min,0)
    ESTAB       0      0                                                    10.0.64.19:60569                                                10.0.64.107:61616   
    ESTAB       0      0                                                    10.0.64.19:52745                                                10.0.64.129:61616   
    ESTAB       0      52                                               172.16.132.189:ssh                                                172.16.132.92:50598    timer:(on,476ms,0)
    ESTAB       0      0                                                    10.0.64.19:56401                                                10.0.64.107:61616   
    ESTAB       0      0                                                    10.0.64.19:54805                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:60772                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:55510                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:45663                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:39262                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:57775                                                10.0.64.129:61616   
    ESTAB       0      0                                                    10.0.64.19:52205                                                 10.0.64.18:6379    
    ESTAB       0      0                                                    10.0.64.19:remotefs                                               10.0.64.12:sentinel 

    这个输出更上次输出相比,多了一个timer输出。这个输出描述的是tcp socket上的定时器,在说明这个之前先了解一下linux对一个tcp socket可能设置的定时器。
    tcp socket总共有7个定时器,通过4个timer实现。分别是
    通过icsk_retransmit_timer实现的重传定时器、零窗口探测定时器;通过sk_timer实现的连接建立定时器、保活定时器和FIN_WAIT_2定时器;通过icsk_delack_timer实现的延时ack定时器;以及TIME_WAIT定时器。

    off: 当前socket没有timer
    on: 重传timer
    keepalive:连接建立timer or fin_wait_2 timer or 保活timer;具体是那个timer,可以根据连接的状态来确定。
    timewait: TIME_WAITtimer
    persist:零窗口探测timer 

  • 相关阅读:
    双11享Go了吗?2017阿里双11在线峰会续写科技盛宴!
    python django 原生sql 获取数据
    python 操作mysql
    django post 请求传参
    Django post 报错
    django get请求传参
    windows8.1下装kali linux 2017.3双系统(最新版)
    Django 速成
    Galera将死——MySQL Group Replication正式发布
    Galera将死——MySQL Group Replication正式发布
  • 原文地址:https://www.cnblogs.com/fpcbk/p/14242470.html
Copyright © 2011-2022 走看看