tcp socket状态

perf:linux内核自带的性能分析工具

ss:Socket Statistics的缩写,可以用来获取 socket统计信息

fd:file descriptor,是linux为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件
在这里插入图片描述
在这里插入图片描述
Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库。

linux TIME_WAIT 相关参数:

net.ipv4.tcp_tw_reuse = 0 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭
net.ipv4.tcp_tw_recycle = 0 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
net.ipv4.tcp_fin_timeout = 60 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间

RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。

在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回.

http://nginx.org/en/docs/http/ngx_http_core_module.html#reset_timedout_connection

SO_LINGER选项则是用来修改这种默认操作的

https://blog.51cto.com/hld1992/2285410

实时观察系统socket使用情况:

cat /proc/net/sockstat

sockets: used 294

TCP: inuse 38 orphan 0 tw 0 alloc 48 mem 4

UDP: inuse 4 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连接数,其值等于TIME_WAIT状态链路数

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

TCP: mem:套接字缓冲区使用量(单位页大小),对应系统所有tcp链路的内存开销。

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

RAW:单纯IP层socket

FRAG:使用的IP段数量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值