美文网首页
使用Netstat命令查看Web服务器并发请求连接数

使用Netstat命令查看Web服务器并发请求连接数

作者: garyond | 来源:发表于2017-07-19 09:31 被阅读176次

    查看服务器TCP连接状态

    [root@Nginx-Server-98 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(k in S) print k,S[k]}'
    
    # 关闭等待的请求数据
    CLOSE_WAIT 26
    # 正党数据传输状态
    ESTABLISHED 36
    FIN_WAIT2 1
    # 等待超时结束的请求数
    TIME_WAIT 386
    

    说明

    1. netstat常见参数

    • -a (all)显示所有选项,默认不显示LISTEN相关
    • -t (tcp)仅显示tcp相关选项
    • -u (udp)仅显示udp相关选项
    • -n 拒绝显示别名,能显示数字的全部转化成数字。
    • -l 仅列出有在 Listen (监听) 的服務状态
    • -p 显示建立相关链接的程序名
    • -r 显示路由信息,路由表
    • -e 显示扩展信息,例如uid等
    • -s 按各个协议进行统计
    • -c 每隔一个固定时间,执行该netstat命令。

    2. awk常用内置变量

    • ARGC 命令行参数个数
    • ARGV 命令行参数排列
    • ENVIRON 支持队列中系统环境变量的使用
    • FILENAME 浏览的文件名
    • FNR 浏览文件的记录数
    • FS 设置输入域分隔符,等价于命令行 -F选项
    • NF 浏览记录的域的个数
    • NR 已读的记录数
    • OFS 输出域分隔符
    • ORS 输出记录分隔符
    • RS 控制记录分隔符

    TCP状态转换

    TCP状态转换图

    TCP状态说明:

    • CLOSED 无连接是活动的或正在进行
    • LISTEN 服务器在等待进入呼叫
    • SYN_RECV 一个连接请求已经到达,等待确认
    • SYN_SENT 应用已经开始,打开一个连接
    • ESTABLISHED 正常数据传输状态
    • FIN_WAIT1 应用说它已经完成
    • FIN_WAIT2 另一边已同意释放
    • ITMED_WAIT 等待所有分组死掉
    • CLOSING 两边同时尝试关闭
    • TIME_WAIT 另一边已初始化一个释放
    • LAST_ACK 等待所有分组死掉

    状态转换过程

    1. CLOSED:起始点,在超时或者连接关闭时候进入此状态。
    2. LISTEN:Server端在等待连接过来时候的状态,Server端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。
    3. SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服务器端不能连接,则直接进入CLOSED状态。
    4. SYN_RCVD:跟3对应,服务器端接受客户端的SYN请求,服务器端由LISTEN状态进入SYN_RCVD状态。同时服务器端要回应一个ACK,同时发送一个SYN给客户端;另外一种情况,客户端在发起SYN的同时接收到服务器端得SYN请求,客户端就会由SYN_SENT到SYN_RCVD状态。
    5. ESTABLISHED: 服务器端和客户端在完成3次握手进入状态,说明已经可以开始传输数据了。
    6. FIN_WAIT_1:主动关闭的一方,由状态5进入此状态。具体的动作时发送FIN给对方。
    7. FIN_WAIT_2:主动关闭的一方,接收到对方的FIN ACK,进入此状态。由此不能再接收对方的数据。但是能够向对方发送数据。
    8. CLOSE_WAIT:接收到FIN以后,被动关闭的一方进入此状态。具体动作时接收到FIN,同时发送ACK。
    9. LAST_ACK:被动关闭的一方,发起关闭请求,由状态8进入此状态。具体动作时发送FIN给对方,同时在接收到ACK时进入CLOSED状态。
    10. CLOSING:两边同时发起关闭请求时,会由FIN_WAIT_1进入此状态。具体动作是,接收到FIN请求,同时响应一个ACK。
    11. TIME_WAIT:最纠结的状态来了。从状态图上可以看出,有3个状态可以转化成它,下面将仔细分析:
      • 由FIN_WAIT_2进入此状态:在双方不同时发起FIN的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的FIN后进入的状态。
      • 由CLOSING状态进入:双方同时发起关闭,都做了发起FIN的请求,同时接收到了FIN并做了ACK的情况下,由CLOSING状态进入。
      • 由FIN_WAIT_1状态进入:同时接受到FIN(对方发起),ACK(本身发起的FIN回应),与b的区别在于本身发起的FIN回应的ACK先于对方的FIN请求到达,而b是FIN先到达。这种情况概率最小。

    相关文章

      网友评论

          本文标题:使用Netstat命令查看Web服务器并发请求连接数

          本文链接:https://www.haomeiwen.com/subject/ibgkkxtx.html