zoukankan      html  css  js  c++  java
  • Linux下ss命令的研究

    1.ss命令简介

    •ss 是 Socket Statistics 的缩写。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。

     

    2.ss与netstat

    •在最新的Linux系统里面,netstat的部分命令已经被更为强大的ss取代了,netstat已过时。ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

     

    •上图为stackoverflow社区里一片文章对这两个命令的评论,下图为ss和netstat监控的区别,ss是获取的socket的信息,而netstat是通过解析/proc/net/下面的文件来获取信息包括Sockets,TCP/UDP,IP,Ethernet信息

     

    3.ss命令探索

    •使用ss --help查看netstat常用命令

     

    •ss -tnl 查看主机监听的端口

     

    •ss -tlr 解析IP和端口号

     

    •ss -s 查看概要信息

     

    •ss -at获取tcp socket   ss -au获取udp socket

     

    •通过 dst/src/dport/sprot 语法来过滤连接的来源端口和目标端口

    显示大于等于50的端口

     

    •显示状态为established的ssh连接

     

    •time命令分别获取通过netstat和ss命令获取程序和占用资源所用时间

     

     

     

     

    可以看出ss的效率比netstat高出不少

    4.总结

    •ss命令性能出色且功能丰富,可以用来替代 netsate 命令成为我们日常查看 socket 相关信息的利器。其实抛弃 netstate 命令已经是大势所趋,有的 Linux 版本默认已经不再内置 netstate 而是内置了 ss 命令。

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

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

     

  • 相关阅读:
    音标,口型,舌位对照表:适合已有一定英语基础的人重新回顾音标发音,在不断的练习中让自己的发音更准确,口型更标准。
    c++友元函数和友元类
    经典MFC界面和Ribbon界面框架对比(单文档为例)
    QEM三维模型简化算法
    VC6和VS2008中C++编译器差异
    VS操作技巧
    msvcrt.lib和LIBCD.lib链接冲突
    二叉树遍历算法
    IE/QQ使用代理上网
    Google Map街景(红蓝立体)
  • 原文地址:https://www.cnblogs.com/yingjiehuang/p/11944377.html
Copyright © 2011-2022 走看看