本帖最后由 VisualEleven 于 2011-03-13 04:37:12 编辑

解决方案 »

  1.   

    这个也要看服务器的性能是怎样的,因为一般IOCP是根据CPU的数量来申请线程的
      

  2.   

    没错,不过,我就是想问问有做过大并发量的,就是连接发个小数据,拿一般的16块的CPU版来说,能大约达到多少?
      

  3.   

    tcp端口也就65536个. 如果非要达到9万多.还要用udp通讯.两个合力可以并发9w多连接.而且要机器cpu很强同时iocp和udp设计的要合理.高效.避免无用的cpu浪费.内存浪费.而且要每个连接收发量小.比如每30秒才和server通讯一次.如果频繁通讯,server会被d死的.
      

  4.   

    除非用了UDP加TCP一起的形式
    单一的TCP或者UDP的socket能分配的总数65535个
      

  5.   

    9W多?有点怀疑。端口可用数才65535个。不过上到3-4W还是很真常的。
    我测试过:p4 1.7 512内存,使用IOCP模型,每隔1s进行一次数据交换,上到3W多都很正常。
      

  6.   

    1.机器性能
    2.IOCP的设计
    3.业务逻辑设计一般的数据中转服务,没有多少业务逻辑的话,几W应该也不是问题
      

  7.   

    如果你的CPU够强劲的话,网络带宽也够的话,那么最高并发连接,就要看你系统中有多少非分页内存池可用了。32位的windows操作系统,无论你物理内存多大,可用的非分页内存池最大也是256M(32位win 7和windows 2008不清楚是否适用于这个)。以下就来算一下帐(假设服务器是接收连接,并不向外发起任何连接):
    1.accept()或AcceptEx(),每接收一个连接,要占用1.5k左右的非分页内存池内存
    2.任何一个默认的WSASend()或WSARecv(),至少锁上4KB或以上非分页内存池内存假设你操作系统的驱动和其它必须软件占用了50MB的非分页内存池内存,那剩下了200MB非分页内存池,再假设你的程序只是接收连接,不做任何 WSASend(),WSARecv()或向外连接的操作,那么你的IOCP服务器最大可接收的连接为:200MB * 1024 KB/MB / 1.5 KB = 136533个连接。但如果你的IOCP服务器是向外做TCP连接的话,那么每个connect()要用2KB左右非分页内存池内存,而且还要受限于系统可分配的TCP端口总数(65535)如果操作系统是64位的windows,如果物理内存很大的话,非分页内存池是比32位操作系统的要大很多.32位系统的最大非分页内存池只能到256MB,而64位系统的最大非分页内存池可以到达可怕的128GB.那如果IOCP服务器是运行在64位的windows下(XP以后的操作系统),那可以支持的并发连接,是随便能超过10多W的。
      

  8.   

    补充一点,32位的Vista或以后的系统(windows 7,windows 2008等),非分页内存池可以达到75%的物理内存或最高的2GB(视乎哪一个小点,例如3GB物理内存,75% * 3GB = 2.25GB,min(2GB,2.25GB) = 2GB),非分页内存可以到2GB)。
    具体可以查看以下连接(英文的):
    http://blogs.technet.com/b/russinovich/archive/2009/03/26/3211216.aspx
      

  9.   

    WinEggDrop. 不会就是那个写黑软的WinEggDrop吧..感觉很熟悉..
      

  10.   

    并发9万多和端口数目没关系,说明可以同时支持9万个连接,系统存在9万个socket对象,每个对象确定一个客户端,cpu的个数决定了在同一时间内能够同时处理的连接数。并不是所有的连接都是同时处理的。
      

  11.   

    不过话说回来了,既然是socket的数量,因此就有限制,当然系统默认是65535,不过可以通过修改系统配置修改的,具体的楼主可以调研一下
      

  12.   

    对于服务端来说,每个连接都是同一组IP:Port,怎么会有人考虑到65536的限制的,又不是客户端。
      

  13.   

    9W多有点吹NB的感觉了 只连接不做事?
      

  14.   

    亲们,别再自我YY了,看看大牛的讲解吧:
    http://yaocoder.blog.51cto.com/2668309/1312821