zoukankan      html  css  js  c++  java
  • ss命令输出中Recv-Q、Send-Q的含义

    首先,为什么ss比netstat快:
    netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多。

    [root@VM_0_11_centos ~]# ss -tan
    State Recv-Q Send-Q Local Address:Port Peer Address:Port
    LISTEN 0 128 *:27017 *:*

    连接状态、(这个连接的)接收队列(缓冲区)、发送队列(缓冲区)、本地地址和端口、对端地址和端口

    [root@VM_0_11_centos ~]# ss -tan|grep 3306
    TIME-WAIT 0 0 127.0.0.1:48782 127.0.0.1:3306
    TIME-WAIT 0 0 127.0.0.1:48766 127.0.0.1:3306
    TIME-WAIT 0 0 127.0.0.1:48816 127.0.0.1:3306
    TIME-WAIT 0 0 127.0.0.1:48796 127.0.0.1:3306
    LISTEN 0 128 :::3306 :::*

    查看一下本地mysql的连接,4个time_wait应该是本地prometheus的mysql监控留下的,
    然后最后LISTEN应该就是mysql的监听3306端口的server socket了,这里的疑问是为什么Send-Q发送队列会是128?
    原因是Recv-Q Send-Q在LISTEN状态的连接与其他状态的连接的含义有所不同,
    LISTEN状态Recv-Q指的是当前已完成establis而在accept队列里等待应用程序accept的连接数,而Send-Q则是指的这个队列的最大长度。等于min(backlog, somaxconn);
    其他状态连接的Recv-Q Send-Q的含义分别是该连接在内核空间中当前读缓冲区和写缓冲区的字节大小。


    网络程序底层,以服务端接收数据包为例,是内核通过tcp协议栈程序先把数据读到内核缓冲区,然后应用程序发起系统调用recv,把数据从内核缓冲区中读到自己的内存,
    我们叫CPU从内核态到用户态工作,然后应用程序就可以处理这部分数据了。

  • 相关阅读:
    list转datatable,SqlBulkCopy将DataTable中的数据批量插入数据库
    Html.BeginForm 与Section、Partial View 和 Child Action
    e.stopPropagation();与 e.preventDefault();
    NPOI导出
    Excel导入导出(篇二)
    Excel导入导出,通过datatable转存(篇一)
    ajax请求加载Loading或错误提示
    jQuery UI dialog
    Zebra_Dialog 弹出层插件
    Google浏览器导出书签
  • 原文地址:https://www.cnblogs.com/lyhero11/p/14621956.html
Copyright © 2011-2022 走看看