漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!

共 543字,需浏览 2分钟

 ·

2021-01-15 12:06

实际中 TCP 连接上肯定是要进行数据的收发的,而且还会有 TIME_WAIT 等其它状态。在这些复杂情况下,一条连接占用多大内存呢?我用做了七天的实验结果告诉你!

实验1:ESTABLISH空连接




实验2:客户端 => 服务器发送数据测试





实验3: 服务器 => 客户端发送数据测试



实验4:非 ESTABLISH 状态





总结

我们把实验中的数据来总结一下

可见,内核在 socket 内存开销优化上采取了不少方法:

  • 1. 内核会尽量及时回收发送缓存区、接收缓存区,但高版本做的更好
  • 2. 发送接收缓存区最小并一定不是 rmem 内核参数里的最小值,实际可能会更小
  • 3. 其它状态下,例如对于TIME_WAIT还会回收非必要的 socket_alloc 等对象


推荐阅读

你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了

你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了

实战!我用“大白鲨”让你看见 TCP


浏览 78
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报