ss

用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat/proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。

-h:显示帮助信息;

-V:显示指令版本信息;

-n:不解析服务名称,以数字方式显示;

-a:显示所有的套接字;

-l:显示处于监听状态的套接字;

-o:显示计时器信息;

-m:显示套接字的内存使用情况;

-p:显示使用套接字的进程信息;

-i:显示内部的TCP信息;

-4:只显示ipv4的套接字;

-6:只显示ipv6的套接字;

-t:只显示tcp套接字;

-u:只显示udp套接字;

-d:只显示DCCP套接字;

-w:仅显示RAW套接字;

-x:仅显示UNIX域套接字。

显示TCP连接ss -t -a

显示 Sockets 摘要ss -s

查看进程使用的socketss -pl

找出打开套接字/端口应用程序ss -pl | grep 3306

Recv-Q和Send-Q详解

当 client 通过 connect 向 server 发出 SYN 包时,client 会维护一个 socket 等待队列,而 server 会维护一个 SYN 队列

此时进入半链接的状态,如果

socket 等待队列满了,server 则会丢弃,而 client 也会由此返回 connection time out;只要是

client 没有收到 SYN+ACK,3s 之后,client 会再次发送,如果依然没有收到,9s 之后会继续发送

半连接 syn 队列的长度为 max(64, /proc/sys/net/ipv4/tcp_max_syn_backlog)  决定

当 server 收到 client 的 SYN 包后,会返回 SYN, ACK 的包加以确认,client 的 TCP 协议栈会唤醒 socket 等待队列,发出 connect 调用

client

返回 ACK 的包后,server 会进入一个新的叫 accept 的队列,该队列的长度为 min(backlog,

somaxconn),默认情况下,somaxconn 的值为 128,表示最多有 129 的 ESTAB 的连接等待 accept(),而

backlog 的值则由int listen(int sockfd, int backlog)中的第二个参数指定,listen 里面的 backlog 的含义请看这里。

accept 队列满了之后,即使 client 继续向 server 发送 ACK 的包,也会不被相应,此时,server 通过

/proc/sys/net/ipv4/tcp_abort_on_overflow 来决定如何返回,0 表示直接丢丢弃该 ACK,1 表示发送

RST 通知 client;相应的,client 则会分别返回 read timeout 或者 connection reset by

peer。上面说的只是些理论,如果服务器不及时的调用 accept(),当 queue 满了之后,服务器并不会按照理论所述,不再对 SYN

进行应答,返回 ETIMEDOUT。根据这篇文档的描述,实际情况并非如此,服务器会随机的忽略收到的 SYN,建立起来的连接数可以无限的增加,只不过客户端会遇到延时以及超时的情况。

可以看到,整个 TCP stack 有如下的两个 queue:

1. 一个是 half open(syn queue) queue(max(tcp_max_syn_backlog, 64)),用来保存 SYN_SENT 以及 SYN_RECV 的信息。

2. 另外一个是 accept queue(min(somaxconn, backlog)),保存 ESTAB 的状态,但是调用 accept()。

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。

linux 清空进程recv q,Linux中ss命令Recv-Q和Send-Q详解相关推荐

  1. dd linux 格式化u盘启动盘_linux dd命令刻录启动U盘详解

    linux dd命令刻录启动U盘详解 dd命令做usb启动盘十分方便,只须:sudo dd if=xxx.iso of=/dev/sdb bs=1M 用以上命令前必须卸载u盘,sdb是你的u盘,bs= ...

  2. python中config命令_python的logging.config使用详解

    python的log模块是日常使用最多的模块之一,  简单的使用这里就不多说了,见(http://blog.csdn.net/jianhong1990/article/details/17475717 ...

  3. linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令

    本文给大家介绍进程的挂起及恢复命令,具体内容如下所示: #ctrl+z:挂起,程序放到后台,程序没有结束. #jobs:查看被挂起的程序工作号 恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前 ...

  4. Linux中head和tail命令作用,Linux 命令head和tail常见用法详解

    head和tail是一组想对应的命令,默认分别显示文件的开头和末尾10行记录. head head 命令可以将一段文本的开头一部分输出到标准输出. head命令既可以处理文本文件也可以处理标准输入. ...

  5. linux 脚本编写基本命令,Linux Shell命令行及脚本编程实例详解

    <Linux典藏大系:Linux Shell命令行及脚本编程实例详解>共15章,分为两篇.主要内容包括:Linux 及Linux Shell简介.初识Linux Shell.常用Shell ...

  6. linux里sh命令是做什么的?详解!

    linux里sh命令是做什么的?详解! cs_jiao | 浏览 49759 次  2010-08-20 12:05  2010-08-20 12:29 最佳答案 sh或是执行脚本,或是切换到sh这个 ...

  7. linux系统编程笔记02——Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux命令:修改文件权限命令chmod.chgrp.chown详解 Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限 ...

  8. unix/linux命令“ls -l”选项输出结果详解

    from: http://hi.baidu.com/hoxily/item/12e2a02d03f77e0942634a8e unix/linux命令"ls -l"选项输出结果详解 ...

  9. Linux用户、权限及改变文件所有者及文件所属组多例详解 附python代码

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) Linux用户.权 ...

最新文章

  1. 判断32位整数二进制中1的个数
  2. UVA - 10048 Audiophobia(Floyd求路径上最大值的最小)
  3. 软件架构视图—4+1模式
  4. Android 系统自带 Theme(主题)
  5. NetBean中的使用,比如快捷键
  6. 像素纵横比基础知识(正方形像素,非正方形像素)
  7. 草原深处的“那达慕”
  8. nand flash坏块管理OOB,BBT,ECC
  9. div中同时存在文本和数字超过两行出省略号
  10. NAR丨方海发布免疫疾病遗传靶点数据库“优先指数”,助力计算转化医学研究...
  11. 指定的服务已经标记为删除_全球70%的“根服务器”设在美国,为避免关网,中国已经在行动!...
  12. linux下打印用户态段错误信息的一种方法
  13. 【安全牛学习笔记】SSL、TLS拒绝服务***和补充概念
  14. python从入门到精通——完整教程
  15. matlab——knnsearch用法介绍
  16. 支持机顶盒的电影服务器,手把手教你用网络机顶盒看电影
  17. 苹果手机输入屏保后锁屏_苹果手机动态锁屏屏保怎么设置
  18. 目前常用的室内导航地图有哪些?什么软件可以室内导航?
  19. 最牛茅台投资人的一席真言
  20. Python 简单编写一个注册邮箱

热门文章

  1. 基于TCP/UDP的socket编程
  2. Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍
  3. strcat与strncat的C/C++实现
  4. mysql如何输出一句话_MySQL/ACCESS导出一句话拿WebShell后门命令
  5. 哪款浏览器好用_超级实用!让你效率倍增的6款浏览器插件
  6. SSH小区停车管理系统答辩PPT免费下载
  7. onenote 模板_onenote实用?炫酷功能系列篇②:用插件让效率翻倍
  8. halcon 差异模型 异物_基于HALCON的形状匹配算法的研究和心得总结
  9. Python+OpenCV:形态学变换
  10. TensorFlow:字词的向量表示