想搭一个支持10万左右TCP联连的网络服务器!
初步设想为通过ACE平台搭建, 用的模型为connector和acceptor , 但经测试以后连接数达到1024时,就停了, 请问各位有什么好的办法.......
如果不用ACE, 有其他的好模型吗? 给点想法也可以
问题点数:99、回复次数:17Top
1 楼vipiii(vipiii)回复于 2005-09-23 15:36:41 得分 0
10万。。。牛Top
2 楼longenic(江寒)回复于 2005-09-23 15:40:19 得分 0
听说有人用epoll实现了这个数量级, 不知道有用ACE成功的吗?Top
3 楼longenic(江寒)回复于 2005-09-24 09:44:47 得分 0
顶.....................Top
4 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-09-24 10:12:02 得分 0
epoll 是2。6出来的可以和完成端口比拼的 强大的异步io接口Top
5 楼rwdx(忆)回复于 2005-09-24 10:26:39 得分 0
一台服务器?就算能到10万个连接已经无实用意义,考虑多机负载均衡吧Top
6 楼longenic(江寒)回复于 2005-09-24 21:16:47 得分 0
有具体的实现模型吗?Top
7 楼longenic(江寒)回复于 2005-09-25 10:30:17 得分 0
顶.......................Top
8 楼yyy790601(发呆的鱼)回复于 2005-09-25 10:33:43 得分 9
传统的select以及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制。select限制一个进程所打开的FD,由FD_SETSIZE设置,默认值是2048,估计你的及其设置成1024了。epoll则没有这个限制,1GB内存的机器上大约是10万左右,具体数目可以cat /proc/sys/fs/file-max察看,一般来说这个数目和系统内存关系很大。如果内存够大,应该能够满足你的要求。
Linux提供了/dev/epoll的设备,以及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll)之后,这种现象得到了大大的缓解,而且epoll的操作简单,总共不过4个API:epoll_create, epoll_ctl, epoll_wait和close。Top
9 楼mengge(踏岸寻柳)回复于 2005-09-26 10:02:39 得分 10
你的这个1024估计是系统文件描述符的限制,查看一下具体的限制吧:
ulimit -aTop
10 楼gaoxianfeng(高)回复于 2005-09-26 14:57:18 得分 20
gz xxTop
11 楼lvjinhua(硬件&软件)回复于 2005-09-26 15:56:46 得分 10
收藏Top
12 楼longenic(江寒)回复于 2005-09-27 19:45:09 得分 0
谢谢各位, 终于通过在linux 2.6 搭了一个差不多的服务, 如果仅仅是连接数,可以达到10万, 不知道有真正运行的时候能不能支持.Top
13 楼superdai(淨居天人)回复于 2005-10-02 20:21:58 得分 10
很牛。Top
14 楼lancezhao(阳光灿烂)回复于 2005-10-03 13:26:37 得分 20
估计不乐观,就算连接数达到10万,具体等到应用的时候还是不堪负载的Top
15 楼tb01412(tb)回复于 2005-10-03 23:00:37 得分 10
用10万个线程或进程实现??
还是当有一个连接时就用一个线程,然后就马上退出线程?
如果同时使用十万个进程或是线程的话,那是不可能的Top
16 楼readlei(lei)回复于 2005-10-04 14:02:38 得分 10
niuTop
17 楼akang520(不悔)回复于 2005-10-31 12:02:24 得分 0
不可能连接10W的,最大,65535Top




