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要快)。

     

  • 相关阅读:
    098实战 Job的调度
    maven在windows下的安装
    Map的知识点梳理(不包含collections工具类)
    001 LRU-缓存淘汰算法
    Android渲染机制和丢帧分析
    Android性能优化典范
    正确使用Android性能分析工具——TraceView
    android View 绘制完成监听
    那些年我们用过的显示性能指标
    view, surfaceView, invalidate, postInvalidate, 刷新屏幕
  • 原文地址:https://www.cnblogs.com/yingjiehuang/p/11944377.html
Copyright © 2011-2022 走看看