讨论:当有大量用户连接请求时,如何提高服务端的效率? 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IOCP,IO完成端口,只有优秀的模型才能提高服务器端的效率 为什么一提到这个就有很多人建议用完成端口呢?奇怪了。拿网络游戏服务端来说,好多就是直接的TCP/IP常连接,因为一台服务器可以连接好几千的SOCKET如果这么多的SOCKET都并发了,那么服务器的处理能力也就差不多了,在多的话也就没意思了。不是吗?不知道高人是怎么理解的!! 这段话引用《网络编程技术》"“完成端口”模型是迄今为止最为复杂的一种I / O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的C P U数量的增多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型。要记住的一个基本准则是,假如要为Windows NT或Windows 2000开发高性能的服务器应用,同时希望为大量套接字I / O请求提供服务(We b服务器便是这方面的典型例子),那么I / O完成端口模型便是最佳选择!" UNIX下该用什么呢?大量的子进程? 这样看服务器端对数据的处理复杂度。如果服务器只是简单的接受连接并收到少量的简单信息,而不需要太多处理,用事件模型也很不错。要处理更多的突发性的并发连接,可以把accept最后一个参数设置得大一点。 在UNIX下使用大量的子进程肯定是不行的,每个进程都是需要耗费相对较多的资源的,试问计算机有多少资源可供耗费呢 IOCP是一个办法,如果连接数过大,UDP可以在适当的情况下考虑。 去看看c10khttp://www.kegel.com/c10k.html超级经典文章 MFC如何从某一时刻开始计时,请给个思路! 高手请进,如何动态创建一个button按钮,请详细点,好么?谢谢 如何让一个函数一直在主线程里运行? ODBC手册中的疑问 面临择业!彷徨ing 如何在一个不规则的区域进行透明位图的操作,在线等待 为什么网络通讯程序调试模式下运行会频繁出现SOCKET函数返回错误? 请问如何把MSDN关联到vc里 IDS_REG_KEY? Cwnd客户区都指的是什么? 请教,关于“修改注册表” 在vc中修改某一字段的值,显示一个对话框提示:debug assertion failed,然后显示:无效的游标状态
拿网络游戏服务端来说,好多就是直接的TCP/IP常连接,因为一台服务器可以连接好几千的SOCKET如果这么多的SOCKET都并发了,那么服务器的处理能力也就差不多了,在多的话也就没意思了。不是吗?
不知道高人是怎么理解的!!
程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的C P U数量的增
多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型。要记住的一个基本
准则是,假如要为Windows NT或Windows 2000开发高性能的服务器应用,同时希望为大量套
接字I / O请求提供服务(We b服务器便是这方面的典型例子),那么I / O完成端口模型便是最佳
选择!"
要处理更多的突发性的并发连接,可以把accept最后一个参数设置得大一点。
http://www.kegel.com/c10k.html
超级经典文章