linux 查看SOCKET使用情况

  • Post author:
  • Post category:linux



Linux系统中,查看SOCKET使用情况可以使用ss命令。






1、命令格式:




ss [参数]




ss [参数] [过滤]




2、命令功能:




ss(Socket Statistics的缩写)命令可以用来获取 socket统计信息,此命令输出的结果类似于




netstat输出的内容,但它能显示更多更详细的 TCP连接状态的信息,且比 netstat 更快速高效。它使用了 TCP协议栈中




tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss命令快捷高效。在没有




tcp_diag,ss也可以正常运行。




3、命令参数:




-h, –help 帮助信息




-V, –version 程序版本信息




-n, –numeric 不解析服务名称




-r, –resolve 解析主机名




-a, –all 显示所有套接字(sockets)




-l, –listening 显示监听状态的套接字(sockets)




-o, –options 显示计时器信息




-e, –extended 显示详细的套接字(sockets)信息




-m, –memory 显示套接字(socket)的内存使用情况




-p, –processes 显示使用套接字(socket)的进程




-i, –info 显示 TCP内部信息




-s, –summary 显示套接字(socket)使用概况




-4, –ipv4 仅显示IPv4的套接字(sockets)




-6, –ipv6 仅显示IPv6的套接字(sockets)




-0, –packet 显示 PACKET 套接字(socket)




-t, –tcp 仅显示 TCP套接字(sockets)




-u, –udp 仅显示 UCP套接字(sockets)




-d, –dccp 仅显示 DCCP套接字(sockets)




-w, –raw 仅显示 RAW套接字(sockets)




-x, –unix 仅显示 Unix套接字(sockets)




-f, –family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink




-A, –query=QUERY, –socket=QUERY




QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]




-D, –diag=FILE 将原始TCP套接字(sockets)信息转储到文件




-F, –filter=FILE 从文件中都去过滤器信息




FILTER := [ state TCP-STATE ] [ EXPRESSION ]



4、使用实例:


# ss -s

Total: 140 (kernel 166)

TCP:   108 (estab 84, closed 16, orphaned 0, synrecv 0, timewait 15/0), ports 88

Transport Total     IP        IPv6

*         166       –         –

RAW       0         0         0

UDP       0         0         0

TCP       92        92        0

INET      92        92        0

FRAG      0         0         0




# ss -t -a

State      Recv-Q Send-Q                            Local Address:Port                                Peer Address:Port

LISTEN     0      128                                           *:http                                           *:*

SYN-RECV   0      0                                      10.0.0.2:http                                5.206.224.30:optika-emedia

LISTEN     0      128                                           *:epmd                                           *:*

LISTEN     0      128                                           *:ssh                                            *:*

LISTEN     0      128                                           *:15672                                          *:*

LISTEN     0      128                                           *:https                                          *:*

LISTEN     0      128                                           *:amqp                                           *:*

LISTEN     0      128                                           *:25672                                          *:*

ESTAB      0      0                                      10.0.0.2:46408                                   10.0.0.7:27017

TIME-WAIT  0      0                                     127.0.0.1:47209                                  127.0.0.1:http

TIME-WAIT  0      0                                      10.0.0.2:56428                               17.143.163.8:2195

ESTAB      0      0                                      10.0.0.2:33258                                   10.0.0.8:27017







也可以直接查看sockstat



# cat /proc/net/sockstat

sockets: used 141

TCP: inuse 93 orphan 0 tw 13 alloc 94 mem 19

UDP: inuse 0 mem 0

UDPLITE: inuse 0

RAW: inuse 0

FRAG: inuse 0 memory 0




说明:

sockets: used:已使用的所有协议套接字总量

TCP: inuse:正在使用(正在侦听)的TCP套接字数量。其值≤ netstat –lnt | grep ^tcp | wc –l

TCP: orphan:无主(不属于任何进程)的TCP连接数(无用、待销毁的TCP socket数)

TCP: tw:等待关闭的TCP连接数。其值等于netstat –ant | grep TIME_WAIT | wc –l

TCP:alloc(allocated):已分配(已建立、已申请到sk_buff)的TCP套接字数量。其值等于netstat –ant | grep ^tcp | wc –l

TCP:mem:套接字缓冲区使用量(单位不详。用scp实测,速度在4803.9kB/s时:其值=11,netstat –ant 中相应的22端口的Recv-Q=0,Send-Q≈400)

UDP:inuse:正在使用的UDP套接字数量

RAW:

FRAG:使用的IP段数量

IPv6请看:cat /proc/net/sockstat6




版权声明:本文为zeweig原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。