一条TCP连接时占用内存空间多少?

您所在的位置:网站首页 ipad2021内存多少 一条TCP连接时占用内存空间多少?

一条TCP连接时占用内存空间多少?

2023-06-26 09:27| 来源: 网络整理| 查看: 265

目录

一、内存分配关系

1.1物理内存分配关系

1.2TCP申请对象之间关系

二、实测内存开销

2.1客户端内核参数调整

2.2服务端内核参数调整

三、服务端开销计算

3.1 slab内存在连接前后输出以及计算

3.2 TCP对象占用内存

3.3 TCP对象内存开销总结

四、参数设置

4.1 linux打开文件限制配置

4.2 TCP内存设置

4.3 查看连接状态

4.4 其他

        计算网络连接所占用的内存,需要知道申请哪些内存,以及一条TCP连接需要占用多少内存空间。sock_inode_cache、tcp_sock、dentry、file 内存对象占用多少空间?

一、内存分配关系 1.1物理内存分配关系

1.2TCP申请对象之间关系

二、实测内存开销 2.1客户端内核参数调整 # vi /etc/sysctl.conf #端口号 net.ipv4.ip_local_port_range = 5000 65000 net.ipv4.tcp_tw_reuse = 0 #net.ipv4.tcp_tw_recycle = 0 #time_wait状态 net.ipv4.tcp_max_tw_buckets = 60000 fs.file-max=210000 fs.nr_open=210000 # sysctl -p #vim /etc/security/limits.conf * soft nofile 1010485 * hard nofile 1011000 2.2服务端内核参数调整 # vi /etc/sysctl.conf net.core.rmem_max = 8388608 net.ipv4.tcp_rmem = 4096 131072 8388608 net.core.wmem_max = 8388608 net.ipv4.tcp_wmem = 4096 16384 8388608 fs.file-max=2100000 fs.nr_open= 2100000 net.core.somaxconn = 1024 # sysctl -p #vim /etc/security/limits.conf * soft nofile 1010485 * hard nofile 1011000

服务端与客户端的缓存清理

echo "3" > /proc/sys/vm/drop_caches 三、服务端开销计算 3.1 slab内存在连接前后输出以及计算 root@wy-virtual-machine:~# cat /proc/meminfo | grep Slab Slab: 147724 kB root@wy-virtual-machine:~# root@wy-virtual-machine:~# cat /proc/meminfo | grep Slab Slab: 180136 kB root@wy-virtual-machine:~# root@wy-virtual-machine:~# cat /proc/meminfo | grep Slab Slab: 195816 kB

180136 - 147724 = 32412 / 10000 = 3.2412K  ESTABLISH

195816 - 180136 = 15680 / 10000 = 1.568K    CLOSE_WAIT

3.2 TCP对象占用内存

slabtop

Active / Total Objects (% used) : 877387 / 896605 (97.9%) Active / Total Slabs (% used) : 31483 / 31483 (100.0%) Active / Total Caches (% used) : 119 / 167 (71.3%) Active / Total Size (% used) : 298213.95K / 308366.00K (96.7%) Minimum / Average / Maximum Object : 0.01K / 0.34K / 8.00K OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME 155210 155210 100% 0.02K 913 170 3652K lsm_file_cache 99712 99712 100% 0.03K 779 128 3116K kmalloc-32 90048 90048 100% 0.19K 4288 21 17152K dentry 64480 64480 100% 0.12K 2015 32 8060K kernfs_node_cache 60352 60352 100% 0.25K 3772 16 15088K filp 56069 56069 100% 0.81K 2951 19 47216K sock_inode_cache 50050 50050 100% 2.19K 3575 14 114400K TCP 46949 45281 96% 0.20K 2471 19 9884K vm_area_struct 34764 33034 95% 0.62K 2897 12 23176K inode_cache

 2.19K(TCP)+ 0.25K(flip)+0.19K(dentry)+0.81K(sock_inode_cache) = 3.44K

 TCP对象与slab内存比较 稍微差了一点点

 CLOSE_WAIT状态开销也不小有1.56 k

3.3 TCP对象内存开销总结 缓存大小对象sock_inode_cache0.81Kstruct socket_allocTCP2.19Kstruct tcp_sockdentry0.19K struct dentryfile0.25Kstruct file 四、参数设置 4.1 linux打开文件限制配置

1)进程级别,单个进程打开个数 soft nofile 与 fs.nr_open

2)系统级别,fs.file-max,这个参数不限制root用户

如果设置soft nofile 那么 hard nofile也要同步设置如果设置hard nofile ,fs.nr_open也要一起调整如果hard nofile设置比fs.nr_open大,会导致用户无法登录

设置参考

# vi /etc/sysctl.conf fs.file-max=1100000 fs.nr_open= 1100000 #设置比hard大 #sysctl -p # vi /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 4.2 TCP内存设置

读写设置,每个TCP 建立连接大概3.44K,在设置总内存时乘上数量

#sysctl -a net.core.rmem_max = 8388608 net.ipv4.tcp_rmem = 4096 131072 8388608 net.core.wmem_max = 8388608 net.ipv4.tcp_wmem = 4096 16384 8388608

4.3 查看连接状态 # netstat -antp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 689/systemd-resolve tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 837/cupsd tcp6 0 0 ::1:631 :::* LISTEN 837/cupsd 4.4 其他 netstat -antp | grep EST |wc -l   查看单个状态并统计数量slabtop 查看slab对象内存的申请情况,以及使用量

参考

https://github.com/yanfeizhang/coder-kung-fu



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3