查看原文
其他

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

PHP开发者 2022-09-08

The following article is from 开发内功修炼 Author 张彦飞allen

(给PHP开发者加星标,提升PHP技能

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

实验1:ESTABLISH空连接




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





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



实验4:非 ESTABLISH 状态





总结

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

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

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

- EOF -


推荐阅读  点击标题可跳转

1、程序员中的败类!“健康码演示”App开发者被抓

2、漫画:一台 Linux 服务器最多能支撑多少个 TCP 连接

3、PDD 开除“发帖程序员”后,又摊上事了…


看完本文有收获?请分享给更多人

推荐关注「PHP开发者」,提升PHP技能

点赞和在看就是最大的支持❤️



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存