免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
打印 上一主题 下一主题

怎么通过重新编译内核让linux能承受10万个TCP连接呢? [复制链接]

论坛徽章:
0
91 [报告]
发表于 2005-11-04 10:14 |只看该作者
很多跑题的水贴呀

个人看法:要支持超大量连接,首先要解决的是内存消耗问题,现在一般的2.4、2.6内核只支持1G的内核空间,肯定是不行的,但是像RHAS3、4的内核都有补丁,可以支持到1:1的内核-用户空间比,即全部物理内存,这个应该没什么问题了,理论上说几百万个连接也没什么;最主要的是网络应用程序的结构,很大部分应用的复杂性来自这里,如效率、互斥等关键问题,要支持这么多的连接,只能使用异步socket、事件驱动、多线程等机制,还跟应用协议有关系,这个需要花很大力气;另外不可忽视的是,内核里对网络资源的管理也需要定制优化,比如网络驱动及协议实现的优化甚至改造(如驱动中断处理、半连接的管理、已有连接的查找、资源的快速回收)、对网络攻击的防范等等,要知道,在大量并发访问下,内核这部分的开销也是惊人的,要支持超大量连接,绕不开这一块

有谁做这方面开发工作,大家交流交流! mrwangxc@hotmail.com

[ 本帖最后由 caibird3rd 于 2005-11-4 10:24 编辑 ]

论坛徽章:
0
92 [报告]
发表于 2005-11-05 20:35 |只看该作者
看了这么久,大家贴得都很辛苦,说一句吧
首先是理论可行性:不可能实现,遗憾我不是太清楚,没法给你精确说法,分析两方面原因可能不能实现(1、内存分配不出这么大空间,2、无论进程还是线程无法分配这么大的数量)即使你修改了某些相关代码,除非重写新的核心,呵呵
其次是实际操作价值:没价值,不集群 单机 无论多高性能服务器 早就 down 机了

论坛徽章:
0
93 [报告]
发表于 2005-11-08 00:22 |只看该作者
一个聊天服务器10万个连接还是能做得到的

论坛徽章:
0
94 [报告]
发表于 2005-11-08 00:52 |只看该作者
原帖由 北京野狼 于 2005-10-31 14:58 发表


apache稳定的版本都是进程的。
不要去想apache怎么做,你自己写的系统有能力实现apache的稳定型吗?


apache2的进程+线程模式是很稳定的,且性能非常好,dell2850并发能到3000连接。

一个聊天服务器并发10万个tcp连接是可能的,timewait不算的。1个线程可以接管不止一个客户端请求,象IM这类服务就很适用,http请求就不适用了,这样一来内存就够用了。

以QQ和MSN的技术力量,1台dell 2850类似的机器,能做到并发10万个TCP并不难。

[ 本帖最后由 cx6445 于 2005-11-8 00:54 编辑 ]

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
95 [报告]
发表于 2005-11-08 09:40 |只看该作者
原帖由 cx6445 于 2005-11-8 00:52 发表


apache2的进程+线程模式是很稳定的,且性能非常好,dell2850并发能到3000连接。

一个聊天服务器并发10万个tcp连接是可能的,timewait不算的。1个线程可以接管不止一个客户端请求,象IM这类服务就很适用, ...


成天就你们这样做梦的人。
IM服务客户都不是和服务器实时连接的,你知道dell2850并发能到3000连接就足够了。

不是实时连接的,那谈得上并发


http://bbs.chinaunix.net/forum/viewtopic.php?t=479047

论坛徽章:
0
96 [报告]
发表于 2005-11-08 15:19 |只看该作者
原帖由 北京野狼 于 2005-11-8 09:40 发表


成天就你们这样做梦的人。
IM服务客户都不是和服务器实时连接的,你知道dell2850并发能到3000连接就足够了。

不是实时连接的,那谈得上并发


[url]http://bbs.chinaunix.net/forum/viewtopic.php?t=4 ...


实时?看你怎么定义的了。

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
97 [报告]
发表于 2005-11-09 10:15 |只看该作者
原帖由 cx6445 于 2005-11-8 15:19 发表


实时?看你怎么定义的了。



人家问的linux能承受10万个TCP连接呢。
TCP连接你说什么是实时?

论坛徽章:
0
98 [报告]
发表于 2005-11-09 13:06 |只看该作者
[root@im root]# netstat -atn | grep -c ESTABLISHED
14325
[root@im root]#

按你的意思,这个算实时吗?

论坛徽章:
0
99 [报告]
发表于 2005-11-11 18:00 |只看该作者

理论上完全可以

一个TCP连接是靠"IP"和"端口"共同确定的. 只要请求服务的客户端不是用一个IP 同时发起16^2-1 个请求,在服务器这边就没有16^2-1 的端口限制

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
100 [报告]
发表于 2005-11-14 14:08 |只看该作者
原帖由 jxjbsd 于 2005-11-11 18:00 发表
一个TCP连接是靠"IP"和"端口"共同确定的. 只要请求服务的客户端不是用一个IP 同时发起16^2-1 个请求,在服务器这边就没有16^2-1 的端口限制


胡言乱语
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP