1、先查看服务器 PAGESIZE 设置,单位是 Byte,查出来是4096
getconf PAGESIZE
2、查看 tcp 连接分配的缓冲区内存大小设置,单位是 Byte
cat /proc/sys/net/ipv4/tcp_rmem # TCP套接字的接收缓冲区大小
cat /proc/sys/net/ipv4/tcp_wmem # TCP套接字的发送缓冲区大小
查询结果:
root@Develop02:~# cat /proc/sys/net/ipv4/tcp_rmem
4096 87380 6291456
root@Develop02:~# cat /proc/sys/net/ipv4/tcp_wmem
4096 16384 4194304
如上,每个设置都有三个数字,第1个数字是最小值,第2个数字是默认值,第3个数字是最大值。
所以读缓冲区内存大小默认值约为 85KB,写缓冲区大小的默认值为16KB,一条TCP连接缓冲区的默认大小为:16 + 85 = 101KB
3、查看 tcp 连接分配的内存 page 的阈值设置
root@Develop02:~# cat /proc/sys/net/ipv4/tcp_mem
45933 61246 91866
与缓冲区大小设置类似,也是三个数字,但它们的含义有点不同:
- 第一个数字表示,当 tcp 使用的 page 数少于 45933 时,kernel 不对其进行任何的干预
- 第二个数字表示,当 tcp 使用的 page 数超过 61246 时,kernel 会进入 “memory pressure” 压力模式
- 第三个数字表示,当 tcp 使用的 pages 超过 91866 时(约 358M 内存),就会报:Out of socket memory
4、查看TCP连接内存实际使用的page数
root@Develop02:~# cat /proc/net/sockstat
sockets: used 799
TCP: inuse 400 orphan 1 tw 52 alloc 473 mem 83
UDP: inuse 56 mem 14
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
root@Develop02:~#
如上图,mem 后面的 83 表示 page 数,即当前的 TCP连接实际占用内存大小为:
83*4 = 332 KB