2015年(68)
分类: 系统运维
2015-08-31 18:56:44
通过查看socket可以得知系统的网络连接状况,我知道的有下面的几方法可以获取系统的socket的使用情况。
1.netstat
nestat的使用方法没什么好说的,运维的家常必备,如果连这个都不会那是相当不靠谱
[root@localhost ]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.22.240:55197 192.168.22.238:81 TIME_WAIT
tcp 0 0 192.168.22.240:22 192.168.22.76:52426 ESTABLISHED
tcp 0 0 192.168.22.240:55229 192.168.22.238:81 TIME_WAIT
tcp 0 0 192.168.22.240:39833 192.168.22.238:81 TIME_WAIT
----- 略-------------
如果系统连接数很多、负载飚高,使用netstat命令可能会半天出不了结果,这个时候下面的2个方法就派上用场了。
2. ss
通过ss命令可以获取系统的所有TCP/UDP sockets使用情况以及已经建立的ssh/ftp/http等连接情况。
//显示系统的socket汇总信息
[root@localhost ]# ss -s
Total: 318 (kernel 467)
TCP: 327 (estab 101, closed 189, orphaned 7, synrecv 0, timewait 185/0), ports 245
Transport Total IP IPv6
* 467 - -
RAW 1 1 0
UDP 6 5 1
TCP 138 92 46
INET 145 98 47
FRAG 0 0 0
//显示运行的进程及其使用的端口
[root@localhost ]# ss -pl
//显示所有TCP/UDP信息
[root@localhost ]# ss -t/-u -a
//显示所有状态为established的http连接
[root@localhost examples]# ss -o state established '( dport = :http or sport = :http )'
ecv-Q Send-Q Local Address:Port Peer Address:Port
82 0 ::ffff:192.168.22.240:http ::ffff:192.168.22.238:41934 timer:(keepalive,120min,0)
82 0 ::ffff:192.168.22.240:http ::ffff:192.168.22.238:41933 timer:(keepalive,119min,0)
0 0 ::ffff:192.168.22.240:http
TCP的状态不少,可以根据自已的需要过滤
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : All of the above states
connected : All the states except for listen and closed
synchronized : All the connected states except for syn-sent
bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
big : Opposite to bucket state.
示例就列这些吧,更详细的用法可以 man ss
3./proc/net/socketstat
[root@localhost ]#cat /proc/net/sockstat
sockets: used 137
TCP: inuse 49 orphan 0 tw 3272 alloc 52 mem 46
UDP: inuse 1 mem 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段数量