在即时通信软件中提高服务器的最大连接数的方法
在即时通信软件中提高服务器的最大连接数的方法
比较不错的讨论,记下来。http://www.linuxforum.net/forum/gshowthreaded.php?Cat=&Board=program&Number=534096&page=1&view=expanded&sb=5&o=all
还有我认为这个并发数的问题,要从硬件,软件几个层次来看,还有这个网络环境。
1,首先是网络环境,如果网络带宽有限制,这个数据上不来。
2。考虑这个单机的硬件特性,首先就是这个网卡的性能,网卡对大包小包的处理速度怎么样。还有这个系统的总线结构,磁盘与网卡对总线的共享问题。如果有频繁的磁盘操作,这个总线的竞争将会产生。
还有的就是这个内存的访问速度,这个访问对性能的影响也是很大的。在通信服务器的开发中,我见到的基本上对这个内存的操作是比较频繁的。所以我的建议是如果有可能增加这个CACHE的大校提高访问速度。最后就是这个CPU的性能
3。考虑这个操作系统的性能。比如这个网络协议栈的性能。比如这个最大的TCP并发数目,就跟里面的排队有关系。每个进程里面文件描述符的最大数目,每个进程占用的内存的大小,等等。这个需要考虑操作系统的自身特点。
前面几个都跟具体的运行环境有关系。只能通过测试来评估啦。选择一个比较好的运行平台。
后面就是要考虑这个通信服务器的结构设计了。主要就是单线程,多线程,线程池等等。我看了一个资料,上面说的一句话,我比较同意,基本上在设计中就用它作标准了:如果调度时间超过了每个线程的处理时间,那么就用单线程,否则就用多线程。不知是佛正确。
还有对与这个通信服务器的设计问题,我想主要就是对这个负载的分布问题,需要把负载分布到那些地方去。有的是用空间换时间,有的是用时间换空间,这个在设计中要仔细权衡。