漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
原创张彦飞allen开发内功修炼2021-01-12 08:08
收录于话题#开发内功修炼之网络篇30个
点击上方蓝字”开发内功修炼“,关注并设为星标
飞哥的硬核文章将第一时间送达~~~
实际中 TCP 连接上肯定是要进行数据的收发的,而且还会有 TIME_WAIT 等其它状态。在这些复杂情况下,一条连接占用多大内存呢?飞哥用做了七天的实验结果告诉你!
实验1:ESTABLISH空连接
实验2:客户端 => 服务器发送数据测试
实验3: 服务器 => 客户端发送数据测试
实验4:非 ESTABLISH 状态
总结
我们把实验中的数据来总结一下
可见,内核在 socket 内存开销优化上采取了不少方法:
- 内核会尽量及时回收发送缓存区、接收缓存区,但高版本做的更好
- 发送接收缓存区最小并一定不是 rmem 内核参数里的最小值,实际可能会更小
- 其它状态下,例如对于TIME_WAIT还会回收非必要的 socket_alloc 等对象
开发内功修炼之网络篇专辑:
- 图解Linux网络包接收过程
- Linux网络包接收过程的监控与调优
- 聊聊TCP连接耗时的那些事儿
[漫画 一台Linux服务器最多能支撑多少个TCP连接](https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA%3D%3D&mid=2247484207&idx=1&sn=50ae06628062bcdd5b2aff044f34fa80&scene=21#wechat_redirect) [漫画 理解了TCP连接的实现以后,客户端的并发也爆发了!](https://mp.weixin.qq.com/s?__biz=MjM5Njg5NDgwNA%3D%3D&mid=2247484207&idx=1&sn=50ae06628062bcdd5b2aff044f34fa80&scene=21#wechat_redirect)
据说转发、点赞、点在看的都会变的更帅!
本文由作者按照 CC BY 4.0 进行授权