我正在开发一种连接到实时数据服务器(使用TCP)的软件,但有些连接掉线了。我的猜测是客户端无法足够快地读取来自服务器的数据。因此,我想监视我的TCP套接字。为此,我找到了“ ss”工具。
这个工具可以查看每个套接字的状态-这是命令输出的示例行 ss -inm 'src *:50000'
ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105
mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40
我的问题是:记忆部分是什么意思?查看该工具的源代码,我发现数据来自内核结构(sock
中的sock.h
)。更确切地说,它来自以下领域:
r = sk->sk_rmem_alloc
w = sk->sk_wmem_queued;
f = sk->sk_forward_alloc;
t = sk->sk_wmem_alloc;
有人知道他们的意思吗?我的猜测是:
rmem_alloc
:入站缓冲区的大小wmem_alloc
:出站缓冲区的大小sk_forward_alloc
:???sk->sk_wmem_queued
:???
这是我的缓冲区大小:
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_mem = 786432 1048576 1572864
net.core.rmem_default = 110592
net.core.wmem_default = 110592
net.core.rmem_max = 1048576
net.core.wmem_max = 131071