现在有 IOCP 模式的服务器,服务器收到一条消息后要群发给 客户端 ,客户端有上千个到万,现在采取 遍历 发送给客户端,就是 for 循环,发现效率比较低,问问大家有什么好的注意可以提高效率,多谢!!

解决方案 »

  1.   

    现在采取 遍历 发送给客户端,就是 for 循环,发现效率比较低
    ——为什么觉得效率低,都是重叠操作立即返回,效率不见得就低,几百万的连接也能很快处理
    广播消息如果并不重要,可以单开线程用UDP发送,时效上的要求就更不高了这里使用的是完成端口,根本就再用不着什么多线程、线程池
      

  2.   

    用组播(Multipoint/Multicast)比较好,
    只不过组播属于UDP, 可能存在掉包和包乱序的问题.
      

  3.   

    是把文件放Http 服务器上面  然后给客户端个地址自己下载去
    这样的话服务器负载就不用考虑了
      

  4.   

    盲目的优化没有意义,首先要搞清楚瓶颈在什么地方,是CPU资源不够还是带宽不够?另外性能再怎么提高都是有天花板的,要提升系统容量除了优化性能还可以提高伸缩性,改成分布式结构。
      

  5.   

    IOCP?
    开1个线程对所有client发送就可以, 基本能满足你的要求
      

  6.   

    不要让服务器主动发送为好,如果可以接受应该让客户端请求这可以让服务器不在一时处理那么大量的计算。
    如不行,应该将工作分散,比如一次发送还200 条,这时让你的IOCP去做些别的事,然后在一定时间在发送 200 ………… ,在网络上相差几秒钟是可以容忍的,谁让你一次要发上万条了呢。这样就不会有CPU 一直占用较高情况,而且这样做可以同时处理其它事情!
      

  7.   

    我就觉得奇怪,你为什么一个for 要那么长时间, 问题肯定不在 send ,因为 send是马上返回的我估计你涉及到多次 内存复制 造成的,或者是由于其它 代码降低 效率