您的位置:首页 > 运维架构 > Linux

[转载]Linux性能测试 ss命令

2013-01-24 08:35 441 查看

ss即socketstate,也就是说,是可以查看系统中socket的状态的。我们可以用netstat,但为什么还要用ss这个工具呢,当然ss也是有好处的。当我们打开的socket数量很多时,netstat就会变得慢了。我们先来看看ss的使用格式:
[code][root@redhat~]#ss?
ss:bisonbellows(whileparsingfilter):"syntaxerror!"Sorry.
Usage:ss[OPTIONS]
ss[OPTIONS][FILTER]
-h,--helpthismessage
-V,--versionoutputversioninformation
-n,--numericdon'tresolveservicenames
-r,--resolveresolvehostnames
-a,--alldisplayallsockets
-l,--listeningdisplaylisteningsockets
-o,--optionsshowtimerinformation
-e,--extendedshowdetailedsocketinformation
-m,--memoryshowsocketmemoryusage
-p,--processesshowprocessusingsocket
-i,--infoshowinternalTCPinformation
-s,--summaryshowsocketusagesummary
-4,--ipv4displayonlyIPversion4sockets
-6,--ipv6displayonlyIPversion6sockets
-0,--packetdisplayPACKETsockets
-t,--tcpdisplayonlyTCPsockets
-u,--udpdisplayonlyUDPsockets
-d,--dccpdisplayonlyDCCPsockets
-w,--rawdisplayonlyRAWsockets
-x,--unixdisplayonlyUnixdomainsockets
-f,--family=FAMILYdisplaysocketsoftypeFAMILY
-A,--query=QUERY
QUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-F,--filter=FILEreadfilterinformationfromFILE
FILTER:=[stateTCP-STATE][EXPRESSION]
[root@redhat~]#
[/code]


ss的强大之处,大于可以设定过滤条件,我们可以根据socket的状态来进行过滤,也可通过端口与ip地址进行过滤。也就是我们在命令格式里面看到的STATE-FILTER与ADDRESS-FILTER。
首先看看STATE-FILTER,STATE-FILTER可用的过滤条件有:
1.所有的TCP状态,包含:established,syn-sent,syn-recv,fin-wait-1,fin-wait-2,time-wait,closed,close-wait,last-ack,listenandclosing.
2.all,包含所有的状态。
3.connected,除了listen与closed的所有其它状态。
4.synchronized,除了syn-sent的所有connected的状态。
5.bucket
6.big
使用时,如:
$ssstateconnected再看看ADDRESS-FILTER,ADDRESS-FILTER用于过滤端口与地址。而且可以进行表达式组合。可用的子表达式有:
1.dstADDRESS_PATTERN
2.srcADDRESS_PATTERN
3.dportRELOPPORT
4.sportRELOPPORT
5.autobound
其中ADDRESS_PATTERN为ip地址与端口匹配,ip:port,可以用*代替。RELOP为<=>=或==。
如:



[code][root@redhat~]#ssdst169.254.7.1
StateRecv-QSend-QLocalAddress:PortPeerAddress:Port
ESTAB00169.254.0.1:4565169.254.7.1:45831
ESTAB00169.254.0.1:4565169.254.7.1:45827
ESTAB00169.254.6.1:36202169.254.7.1:37520
ESTAB00169.254.0.1:4565169.254.7.1:45832
ESTAB00169.254.0.1:11001169.254.7.1:39425
ESTAB00169.254.0.1:11003169.254.7.1:57108
ESTAB00169.254.0.1:7331169.254.7.1:55076
ESTAB00169.254.0.1:11002169.254.7.1:60527
ESTAB00169.254.6.1:57477169.254.7.1:7331
ESTAB00169.254.0.1:shell169.254.7.1:54370
ESTAB00169.254.0.1:4565169.254.7.1:45812
ESTAB00169.254.0.1:4565169.254.7.1:45813
ESTAB00169.254.0.1:4565169.254.7.1:45810
ESTAB00169.254.0.1:4565169.254.7.1:45811
ESTAB00169.254.0.1:4565169.254.7.1:45808
ESTAB00169.254.0.1:4565169.254.7.1:45816
ESTAB00169.254.0.1:4565169.254.7.1:45806
[root@redhat~]#
[/code]

多个子表达式之间可以组合,当然跟tcpdump一样,可以用orandnot来组合。但括号要用转义符号表示。
如:
[root@redhat~]#ss-ostatefin-wait-1\(sport=:httporsport=:https\)dst193.233.7/24

看看几个例子:
查看系统总体信息:


[code][root@redhat~]#ss-s
Total:160(kernel194)
TCP:48(estab31,closed0,orphaned0,synrecv0,timewait0/0),ports49
TransportTotalIPIPv6
*194--
RAW000
UDP550
TCP48480
INET53530
FRAG000
[root@redhat~]#
[/code]

想看当前机器的11001端口被谁占用了:


[code][root@redhat~]#ss-lpsrc:11001
Recv-QSend-QLocalAddress:PortPeerAddress:Port
00169.254.0.1:11001*:*users:(("syslog-ng",21761,12))
[root@redhat~]#
[/code]

我们可以看到,是一个叫syslog-ng的进程,进程id是21761
原文:/article/4598433.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: