惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Recent Announcements
Recent Announcements
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
罗磊的独立博客
小众软件
小众软件
N
Netflix TechBlog - Medium
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
D
DataBreaches.Net
博客园 - Franky
Vercel News
Vercel News
博客园 - 聂微东
G
Google Developers Blog
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队

博客园 - YZG

zigbee路由(报文实例) Zigbee系列(路由机制) Zigbee系列(end device) Zigbee系列(网络) Zigbee系列(概览) kallsyms , addr to symbol Linux checksum flag in kernel ubuntu apt-xxx 清空DNS缓存 shell loop shell 参数 power sequece grep 文件内容搜索 netif_receive_skb pt_prev why? virtual machine AVR地址空间 altera 与 xilinx fifo 时序的区别 如何在Linux下实现50万并发 Linux tcp socket相关参数设置
对Linux下socket限制的理解
YZG · 2011-04-03 · via 博客园 - YZG

最近在网络上看到一个关于Linux下socket数量限制相关的讨论,主要讨论在linux下,是否能支持10甚至百万个tcp并发连接。

讨论 1:在32为系统下,最大连接数的极限值是多少?

从系统内存的角度考虑,32位系统最大支持4G内存,内核空间为1G。如果每个socket占用的内存为C,那么最大连接数为:

 maxconn = 1GB/C

如何分析每个socket占用的内核空间内存呢?分析socket占用内存的组成部分:文件系统inode + socket结构 + tcp windows。

tcp windows的内存实际上就是挂在sk结构下的skb队列,skb是真正存储数据的地方,也就是消耗内存的地方。如果CPU的响应速度足够快,网络响应也很快,

那么skb队列只需要保留1个就可以,假定为1.5K。

文件系统inode + socket结构 是固定大小的,大约为1K。

理想情况下:每个socket占用的内存为2~3K。以2K计算,内核空间实际可用内存约在800M,那么800M/2K = 400K.

粗略估计,Linux下,32位系统,能支持40万tcp并发连接差不多就到极限了。

分析过程是否有问题,还望高手指教。

HAProxy是通过socket的方式实现的,一直没有找到关于最大并发连接的测试结果,在32位Linux上,最大值估计在20万并发连接左右。