Linux中查看socket状态:
cat /proc/net/sockstat #(这个是ipv4的)
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段数量
IPv6请看:cat /proc/net/sockstat6
TCP6: inuse 3 UDP6: inuse 0 RAW6: inuse 0 FRAG6: inuse 0 memory 0
通过这些值,可以很容易计算出当前的tcp请求数,然后做相关的监控。
Out of socket memory
这几天出现一下错误:
Out of socket memory
kernel: TCP: too many of orphaned sockets
都是因为net.ipv4.tcp_mem参数设置太小引起的
RHEL4.6里默认是:
net.ipv4.tcp_mem = 786432 1048576 1572864
改大些就可以了。
转载请注明:爱开源 » Linux socket 状态