当前位置: 技术问答>linux和unix
想搭一个支持10万左右TCP联连的网络服务器!
来源: 互联网 发布时间:2015-10-26
本文导语: 初步设想为通过ACE平台搭建, 用的模型为connector和acceptor , 但经测试以后连接数达到1024时,就停了, 请问各位有什么好的办法....... 如果不用ACE, 有其他的好模型吗? 给点想法也可以 | g...
初步设想为通过ACE平台搭建, 用的模型为connector和acceptor , 但经测试以后连接数达到1024时,就停了, 请问各位有什么好的办法.......
如果不用ACE, 有其他的好模型吗? 给点想法也可以
如果不用ACE, 有其他的好模型吗? 给点想法也可以
|
gz xx
|
估计不乐观,就算连接数达到10万,具体等到应用的时候还是不堪负载的
|
你的这个1024估计是系统文件描述符的限制,查看一下具体的限制吧:
ulimit -a
ulimit -a
|
收藏
|
很牛。
|
用10万个线程或进程实现??
还是当有一个连接时就用一个线程,然后就马上退出线程?
如果同时使用十万个进程或是线程的话,那是不可能的
还是当有一个连接时就用一个线程,然后就马上退出线程?
如果同时使用十万个进程或是线程的话,那是不可能的
|
niu
|
传统的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。
Linux提供了/dev/epoll的设备,以及后来2.6内核中对/dev/epoll设备的访问的封装(System Epoll)之后,这种现象得到了大大的缓解,而且epoll的操作简单,总共不过4个API:epoll_create, epoll_ctl, epoll_wait和close。