可冰

冰,是沉睡着的水......

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  37 随笔 :: 5 文章 :: 94 评论 :: 0 Trackbacks
网络的并发连接数到底是由什么限制的?即哪些因素是最主要的,难道不能解决吗?
现在一个好的网络程序,通常最多能达到多少的并发连接数?

posted on 2006-06-23 19:40 可冰 阅读(576) 评论(2)  编辑 收藏 引用

评论

# re: [请教]网络程序方面的问题 2006-06-23 21:21 Stone Jiang
这与软\硬件环境都有关  回复  更多评论
  

# re: [请教]网络程序方面的问题 2006-06-24 13:40 可冰
任务体系结构
在任务体系结构领域里,有三种主要的技术:
* 单进程单任务(面向进程):在同一时间里,程序的每一份拷贝都作为一个任务来处理。有时,建立一个新的进程,同时也就建立了一个新的任务(比如: inetd、Sendmail)或者进程可以被重用(如:Apache)。在低负载的时候,这种体系结构一般可以获得较好的性能。在中等负载时,如果进程映像比较小(如:qmail)、应用程序经过执行效率的优化或者应用程序不会创建太多的并发任务,那么还可以勉强应付。在这种情况下,如果总的进程数保持较低的数量(低于中等负载),并且使用了进程缓冲,那么对多处理器系统的利用率将比较高。这种技术存在于所有的操作系统中,不过实现起来Unix比 Windows效率要高得多。(Windows中没有fork()系统调用,并且由于这种方法太慢,所以很少有Windows应用程序采用这种技术。)
* 单线程单任务(多线程):在完成任务的过程中,程序的每一个拷贝在进程内部都作为了一个独立的线程来执行。在低负载到中等负载的情况下,多进程应用程序的性能都非常的好。对于比较高的负载,性能将会下降,但是还可以接受。然而,当负载非常高的时候,多线程应用程序的性能会急剧下降。在一般情况下,典型的多线程应用程序在处理500到1000个任务并发任务时,其性能还可以容忍。每一个任务使用一个新的线程,这样和一个新的进程比起来,将消耗较少的内存和 CPU资源。因为在极重的多线程负载下,只有那些目前使用非常广泛的 UNIX变种才能够继续保持稳定,所以在源代码开放的项目中,很少使用多线程。
* 单线程多任务(异步方式):一个程序使用一系列的线程来运行(一般来说,每一个特定的任务都有专门的线程来处理),并且使用所谓的异步(或者叫无阻塞) TCP/IP技术,每一个线程要处理很多的任务。一般来说,由于大部分程序并不要求去处理高负载的情况,并且异步模式的程序设计相对来说比较困难,所以很少会有程序采用这种体系结构。因为可以使用各自独立的线程,所以多处理器系统中,异步程序的可伸缩性要好得多。因为几乎不会因等待CPU而死锁,所以每一个线程基本上都可以长时间地分配到一个CPU(比如:DNS BIND监控程序)。
[引用自chinaunix:http://bbs.chinaunix.net/viewthread.php?tid=56099]  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理