又有感兴趣的话题了:
liu chuncheng:
前两天看了一篇有关IOCP的文章,里面提到apache。文章作者的观点是用IOCP模型的IIS应该比进程模型的apache的性能要高。我想针对这个主题发起讨论。
首先说一下我的观点:
1、IOCP是windows下比较高效的一个异步IO模型,他可以克服I/O设备慢速的缺点,从而可以构建一个高效的网络通讯模型。
2、但我认为IOCP也不是万能的,只有合适的应用才会发挥他的长处。比如游戏服务器,或者流媒体服务器等。
3、但我认为对于web服务器它不是最好的方案,原因如下:
a、web服务器的连接之间的数据是独立的,没有联系的,那么每个连接的数据用一个线程或者进程来处理是很高效的,处理完之后就退出了,再没有任何其它的
开销。如果用IOCP那么就要放到队列里,从线程池里面频繁的切换线程来处理数据,这种开销还是比较大的。只是web的资源需要做同步的机制。
b、web服务器是基于短连接的,区别于游戏服务器的长连接,就是不需要对这个连接做更多的管理。相当于一个连接上来之后就做一个任务,做完任务之后就一拍两散。
综合上面的两点,化繁为简,我认为对于web服务器用最简单的网络模型——1连接+1线程,可能也是比较好的方案。
一家之言,欢迎大家拍砖!
http://groups.google.com/group/dev4server/browse_thread/thread/6cd19a9afc1fd295/4624a8b4bf162e6f#4624a8b4bf162e6f