具体的可以参考这里
他的最大特点是快, 当你的系统有上万个tcp链接要了解的时候的时候, 你就知道我说什么了. netstat等常规工具变成废铁了, 这时候他的作用就非常明显了.
/proc interface is inadequate, unfortunately. When amount of sockets is enough large, netstat or even plain cat /proc/net/tcp/ cause nothing but pains and curses. In linux-2.4 the desease became worse: even if amount of sockets is small reading /proc/net/tcp/ is slow enough.
This utility presents a new approach, which is supposed to scale well. I am not going to describe technical details here and will concentrate on description of the command. The only important thing to say is that it is not so bad idea to load module tcp_diag, which can be found in directory Modules of iproute2. If you do not make this ss will work, but it falls back to /proc and becomes slow like netstat, well, a bit faster yet (see section “Some numbers”).
从技术上讲, 它主要是通过/proc来获取各种各样的统计信息. 特别是当处理tcp的时候用到了, tcp_diag功能. tcp_diag是tcp协议栈用于诊断和统计的一个模块, 用netfilter来获取第一手的信息的. ss就用到了这个技术, 保证了信息的快捷获取.
这个软件是隶属于iproute包的, 如果你的系统没有的话可以这样安装:
apt-get -y install iproute |
用它可以了解下协议栈占用的内存, 每个链接的队列使用情况, 每个链接属于哪个进程.
而之前唯一能用的就是:
watch -n 1 'cat /proc/net/sockstat' |
下面简单介绍下他的使用:
root@ubuntu:/usr/src/iproute-20090324/misc# ss --help |
ss [ OPTIONS ] [ FILTER ] |
-V, --version output version information |
-n, --numeric don't resolve service names |
-r, --resolve resolve host names |
-a, --all display all sockets |
-l, --listening display listening sockets |
-o, --options show timer information |
-e, --extended show detailed socket information |
-m, --memory show socket memory usage |
-p, --processes show process using socket |
-i, --info show internal TCP information |
-s, --summary show socket usage summary |
-4, --ipv4 display only IP version 4 sockets |
-6, --ipv6 display only IP version 6 sockets |
-0, --packet display PACKET sockets |
-t, --tcp display only TCP sockets |
-u, --udp display only UDP sockets |
-d, --dccp display only DCCP sockets |
-w, --raw display only RAW sockets |
-x, --unix display only Unix domain sockets |
-f, --family=FAMILY display sockets of type FAMILY |
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] |
-F, --filter=FILE read filter information from FILE |
FILTER := [ state TCP-STATE ] [ EXPRESSION ] |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -s |
TCP: 21 (estab 7, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -t -m |
State
Recv-Q
Send-Q
Local
Address:Port
Peer Address:Port |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4251 |
CLOSE-WAIT
38
0
192.168.235.147:13910
174.36.30.67:https |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4635 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:54620 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:1095 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:44234 |
ESTAB
0
0
127.0.0.1:54620
127.0.0.1:4369 |
ESTAB
0
0
127.0.0.1:44234
127.0.0.1:4369 |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -p |
State
Recv-Q
Send-Q
Local
Address:Port
Peer Address:Port |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4251 users:(("sshd",8373,3)) |
CLOSE-WAIT
38
0
192.168.235.147:13910
174.36.30.67:https users:(("dropbox",2674,13)) |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4635 users:(("sshd",350,3)) |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:54620 users:(("epmd",28338,5)) |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:1095 users:(("sshd",29044,3)) |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:44234 users:(("epmd",28338,4)) |
ESTAB
0
0
127.0.0.1:54620
127.0.0.1:4369 users:(("beam.smp",25947,11)) |
ESTAB
0
0
127.0.0.1:44234
127.0.0.1:4369 users:(("inet_gethost",23783,8),("inet_gethost",23784,8)) |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -i |
State
Recv-Q
Send-Q
Local
Address:Port
Peer Address:Port |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4251 |
cubic rto:396 rtt:124.5/66 ato:40 cwnd:4 send 375.3Kbps rcv_rtt:296456 rcv_space:66472 |
CLOSE-WAIT
38
0
192.168.235.147:13910
174.36.30.67:https |
cubic wscale:7,9 rto:612 rtt:256/52 ato:40 cwnd:5 send 213.8Kbps rcv_rtt:259 rcv_space:5840 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4635 |
cubic rto:356 rtt:144/33 ato:40 cwnd:4 send 324.4Kbps rcv_rtt:511258 rcv_space:46760 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:54620 |
cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32768 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:1095 |
cubic rto:232 rtt:21/18 ato:40 cwnd:5 ssthresh:4 send 2.8Mbps rcv_rtt:173516 rcv_space:118904 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:44234 |
cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32768 |
ESTAB
0
0
127.0.0.1:54620
127.0.0.1:4369 |
cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32792 |
ESTAB
0
0
127.0.0.1:44234
127.0.0.1:4369 |
cubic wscale:9,9 rto:204 rtt:4/2 ato:40 cwnd:3 send 98.3Mbps rcv_space:32792 |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -e |
State
Recv-Q
Send-Q
Local
Address:Port
Peer Address:Port |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4251 timer:(keepalive,50min,0) ino:1843366 sk:c2ea2600 |
CLOSE-WAIT
38
0
192.168.235.147:13910
174.36.30.67:https ino:12200 sk:c2ea2140 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4635 timer:(keepalive,2min59sec,0) ino:1101514 sk:c2ea4740 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:54620 ino:2309430 sk:c2ea2ac0 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:1095 timer:(keepalive,6min59sec,0) ino:379842 sk:c2f4af80 |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:44234 ino:2044745 sk:c2ea3440 |
ESTAB
0
0
127.0.0.1:54620
127.0.0.1:4369 ino:2309429 sk:c2ea7200 |
ESTAB
0
0
127.0.0.1:44234
127.0.0.1:4369 ino:2044744 sk:c2ea1300 |
root@ubuntu:/usr/src/iproute-20090324/misc# ss -o |
State
Recv-Q
Send-Q
Local
Address:Port
Peer Address:Port |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4251 timer:(keepalive,50min,0) |
CLOSE-WAIT
38
0
192.168.235.147:13910
174.36.30.67:https |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:4635 timer:(keepalive,2min50sec,0) |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:54620 |
ESTAB 0 0 192.168.235.147:ssh 192.168.235.155:1095 timer:(keepalive,6min50sec,0) |
ESTAB
0
0
127.0.0.1:4369
127.0.0.1:44234 |
ESTAB
0
0
127.0.0.1:54620
127.0.0.1:4369 |
ESTAB
0
0
127.0.0.1:44234
127.0.0.1:4369 |
Have fun!!!
- ss-套接字监控工具
ss(Socket Statistics) - another utility to investigate sockets(研究套接字的另一个实用程序,原先的是netstat) ss用于转储套接字统 ...
- CentOS 7上的性能监控工具
Linux中基于命令行的性能监控工具:dstat.top.netstat.vmstat.htop.ss.glances 1.dstat – 多类型资源统计工具(需配置epel源) 该命令整合了vmst ...
- [转]Linux下网络常用命令和工具
转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...
- linux基础之网络基础配置
基础命令:ifconfig/route/netstat,ip/ss,nmcli 一.ifconfig/route/netstat相关命令 1. ifconfig - configure a netw ...
- linux之网络命令
本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lsof.ip.tcpdump.iptables等. 本文不会深入研究这些命令的强大用法,因 ...
- ss命令详解
ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息 ...
- Linux-(ping,traceroute,ss)
ping命令 1.命令格式: ping [参数] [主机名或IP地址] 2.命令功能: ping命令用于:确定网络和各外部主机的状态:跟踪和隔离硬件和软件问题:测试.评估和管理网络.如果主机正在运行并 ...
- Linux ss命令详解
ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息 ...
- 命令备忘 ss
简介: Socket Statistics(ss)命令类似于netstat,它用于显示各种有用的网络套接字信息. 长时间看,已经注意到netstat这个命令程序已经过时了.从而代替netstat的是s ...
随机推荐
- Laravel 5.5 使用 Jwt-Auth 实现 API 用户认证以及刷新访问令牌
最近在做一个公司的项目,前端使用 Vue.js,后端使用 Laravel 构建 Api 服务,用户认证的包本来是想用 Laravel Passport 的,但是感觉有点麻烦,于是使用了 jwt-aut ...
- POJ 2280 Amphiphilic Carbon Molecules 极角排序 + 扫描线
从TLE的暴力枚举 到 13313MS的扫描线 再到 1297MS的简化后的扫描线,简直感觉要爽翻啦.然后满怀欣喜的去HDU交了一下,直接又回到了TLE.....泪流满面 虽说HDU的时限是2000 ...
- 几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)
https://blog.csdn.net/u012328159/article/details/80252012 我们在训练神经网络模型时,最常用的就是梯度下降,这篇博客主要介绍下几种梯度下降的变种 ...
- eclipse help说明链接
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Freference%2Fcdt_u_prop_bu ...
- 【Lua】LuaForWindows_v5.1.4-46安装失败解决方案
下个补丁vcredist_x86.exe 可以到下面连接下载: https://download.csdn.net/download/tvcctv27tv/10344318
- Git 常用命令 思维导图(转)
Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文档和源代码也有很多优势. 本来想着只把最有用.最常用的 Git 命令记下来,但是总觉得这个也挺有用.那个也用 ...
- Oracle PGA
PGA(Process Global Area),是server process一段私有内存区,它包含有全局变量,数据结构和一些控制信息.在Oracle8i 中,PGA调整非常复杂,要调整SORT_A ...
- PHPUnit单元测试
单元测试 PHPUnit <?php /** * 定义一个用来被测试的类RemoteConnect * @author json * */ class RemoteConnect{ public ...
- C#.NET常见问题(FAQ)-如何让Listbox支持多选
把SelectionMode改成MultiExtended 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线 ...
- 微信小程序 - 滚动公告组件
支持横轴.纵轴滚动. 点击下载:speaker