原帖由 "q1208c" 发表:
能打开的端口数是 65535, 你怎么能有 10w 的 tcp 呢?
原帖由 "platinum" 发表:
好像不能那么算
比如 WEB 服务,listen 端口都是 80,3 个连接和 10 个连接在服务端也只有看到 TCP/80 在 ESTABLISHED
原帖由 "q1208c" 发表:
能打开的端口数是 65535, 你怎么能有 10w 的 tcp 呢?
原帖由 "xiyang" 发表:
这样的说法是没有根据的
因为server是被动打开的。
譬如说他在80listen。客户端一般是随机的分配1024-65535之间的端口来建立连接的。
原帖由 "bhpang2" 发表:
算算内存的消耗量。每个TCP连接控制信息可能要100BYTE,消耗10Wx100=10M,还有更大的发送接受缓冲区,一般一个TCP连接要4096x2=8192BYTE这是现代OS中差不多是最少的了,一般是8192x2
消耗10Wx8K=800M,可以认为维护这..........
原帖由 "cxu123" 发表:
而且这些内存是不可分页的,不能用Swap Out
原帖由 "platinum" 发表:
这是不是指不能使用 SWAP 虚拟内存?
原帖由 "cxu123" 发表:
就是这个兄弟说的这样,而且这些内存是不可分页的,不能用Swap Out,10万TCP应该不可能。
原帖由 "platinum" 发表:
这是不是指不能使用 SWAP 虚拟内存?
原帖由 "albcamus" 发表:
何谓不可分页? 如果做DMA用,要求物理上是连续的,不能向vmalloc申请来的那样,可以物理上不连续。即使是这样,已然是分页的,因为页就是内核管理内存的基本单位。kmalloc调用slab分配器,slab分配器调用谁?还?.........
原帖由 "albcamus" 发表:
>;>;swapable是热插拔
热插拔不是Hotplug吗?
原帖由 "bhpang2" 发表:
呵呵,原来如此,qq好象是居于UDP的吧,如果这样就比TCP的简单多了.UDP是无状态的协议,不应该说是实现十万以上连接数,说TCP才说连接,好象是这样的吧.
我没做过程序.socket差不多忘光了,大概应该提供一个进程池,里面有N..........
原帖由 "bhpang2" 发表:
我没做过程序.socket差不多忘光了,大概应该提供一个进程池,里面有N个服务进程在等待工作,想想真象去夜总会啊,大厅里有N个小姐就象服务进程, 客人来了,小姐就会为你服务,但是如果小姐很多也很累,都在睡觉,如果只来了一个客人也要惊动所有的小姐,那就不太好(唤醒太多的进程成本很高),最好只是只叫醒一个小姐就可以了,于是这个环节要采用某些办法保证一次只叫醒一个小姐来服务.程序也大概如此实现吧.
原帖由 "percy_pan" 发表:
有灭搞错,一台主机也只有65536个socket啊,十万个,你做梦吧,
所以你怎么编译都不可能啦
人家肯定搞了负载均衡啦
原帖由 "北京野狼" 发表:
搞linux的都是神仙啊。
至少会做梦
原帖由 "jato" 发表:
哈, 不用这么激动吗.
一台主机用两块网卡就可以过10万了, 不用重编译内核.
只是若内存少, 机器慢的话, 这些连接就做不了什么有用的事情了
原帖由 "北京野狼" 发表:
兄弟不是这么算的。
即便server仅仅监听80.当accept成功之后就产生一个新的socket。
iNewSock = accept(iSock,(struct sockaddr *)&client_addr,&len);
你可以看一下这个新的iNewSock的端口。。。。。。。。。..........
原帖由 "jato" 发表:
你说的这个不是我说的问题啊, 我只说了两个网卡就可以使连接数过10万了. 还有, 你若能在一个网卡上绑定两个或更多的IP的话, 那么一个网卡就行, 不过估计这时就要重编译内核了.
用 TCP 当然是accept 成功后就产..........
原帖由 "jato" 发表:
你说的这个不是我说的问题啊, 我只说了两个网卡就可以使连接数过10万了. 还有, 你若能在一个网卡上绑定两个或更多的IP的话, 那么一个网卡就行, 不过估计这时就要重编译内核了.
用 TCP 当然是accept 成功后就产..........
原帖由 "don" 发表:
难怪msn老死机,原来是搞得这么邪乎。
还是去研究负载均衡吧,不要都在一棵树上吊死。
原帖由 "北京野狼" 发表:
我是不知道楼主,想建立10w个连接干吗?
原帖由 "北京野狼" 发表:
无论多进程还是多线程,10w个连接,设想一下要多少内存?
原帖由 "北京野狼" 发表:
一个线程处理多个连接没有适用性。
原帖由 "北京野狼" 发表:
BTW:做网络server,几乎没有使用多线程的。
原帖由 jato 于 2005-10-28 22:38 发表
有的情况下, 一个连接有几十K 就够了, 只要编程时处理的好一些, 这内存现在并不是大问题..
原帖由 jato 于 2005-10-28 22:38 发表
看什么情况吧, 像聊天室, 若用TCP的话, 一个线程处理多个连接就可能好一些..
原帖由 jato 于 2005-10-28 22:38 发表
哈, 知道为什么吗? 另外, 现在的 APACHE 可是多进程加上多线程的, 并不是一个进程处理一个连接的
原帖由 jato 于 2005-10-28 22:38 发表
哈, 知道为什么吗? 另外, 现在的 APACHE 可是多进程加上多线程的, 并不是一个进程处理一个连接的
原帖由 FerrariAurea 于 2005-10-28 11:53 发表
32位操作系统不可能承受 理论上 65535以上个链接的.因为Accept后,会返回一个65535以内的数作为于客户端通信的端口.虽然客户端connect的端口都是固定一个,但是每次accept成功后,都会对应再分配一个本地端口用来和客 ...
原帖由 北京野狼 于 2005-10-31 14:58 发表
apache稳定的版本都是进程的。
不要去想apache怎么做,你自己写的系统有能力实现apache的稳定型吗?
原帖由 cx6445 于 2005-11-8 00:52 发表
apache2的进程+线程模式是很稳定的,且性能非常好,dell2850并发能到3000连接。
一个聊天服务器并发10万个tcp连接是可能的,timewait不算的。1个线程可以接管不止一个客户端请求,象IM这类服务就很适用, ...
原帖由 北京野狼 于 2005-11-8 09:40 发表
成天就你们这样做梦的人。
IM服务客户都不是和服务器实时连接的,你知道dell2850并发能到3000连接就足够了。
不是实时连接的,那谈得上并发
[url]http://bbs.chinaunix.net/forum/viewtopic.php?t=4 ...
原帖由 cx6445 于 2005-11-8 15:19 发表
实时?看你怎么定义的了。
原帖由 jxjbsd 于 2005-11-11 18:00 发表
一个TCP连接是靠"IP"和"端口"共同确定的. 只要请求服务的客户端不是用一个IP 同时发起16^2-1 个请求,在服务器这边就没有16^2-1 的端口限制
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |