服务器要服务很多网络终端,而且要求实时性很高!
如何尽可能服务更多的终端,一个终端在数据发出1到2秒内就要得到回应
服务器在处理包的过程中还要从数据库里读写数据.
现在服务器挂3000个终端就不太行了,如何提高服务器的性能?数据接收用异步Sock消息处理,数据包处理是多线程的,回应发包在数据处理完后马上发送.一秒内平均收到100个包现在打算减少数据库的访问来改善.

解决方案 »

  1.   

    本来就不是每线程每连接啊
    udp包来着主线程收下包放到list里,多个线程从list中取出处理,再回应!
      

  2.   

    UDP完成端口我试过,还没有消息好用,收到的包实时性不高!
      

  3.   

    完成端口+重叠I/O
    这方面的文章见
    http://dev.csdn.net/Develop/article/10/10177.shtm
    或者网络版随便搜"完成端口"的帖子
    就怕整个架构改成这样要花很多时间的,把数据库部分和网络服务部分分开肯定是可以提高一部分效率的.
      

  4.   

    gracezhu(eutom)完成端口只可能解决数据包的读写问题,并不能解决处理数据包的问题
    现在数据包的收发没有问题很快,丢包问题不严重!问题是处理包不行!
      

  5.   

    呵呵,楼主,你现在最主要的事是找到瓶颈所在,才能对症下药啊。如果瓶颈在数据库再怎么改io模型也无用,如果瓶颈在io模型,那改数据库也无用。
      

  6.   

    数据包的处理要访问数据库,并发访问数据库肯定是要耗费很多时间的,不如把数据的操作都在一个大缓冲区里操作,在刷新时才真正提交.数据库你是用什么访问的啊,DAO不支持多线程安全,你要想方设法提高数据库的访问效率啊.
      

  7.   

    用ADO访问SQLServer我发现大量的时间用在了访问数据库,虽然程序的cache,不过访问还是比较频繁!
    刷新的时候还比较多,主要是以前没有摘好!现在只能考虑怎么优化数据库访问了!
      

  8.   

    用ADO访问SQLServer我发现大量的时间用在了访问数据库,虽然程序的cache,不过访问还是比较频繁!
    刷新的时候还比较多,主要是以前没有摘好!现在只能考虑怎么优化数据库访问了!