如何分析TCP连接的内存占用情况

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值