web服务器并发策略

来源:互联网 发布:war3 mac 1.26 局域网 编辑:程序博客网 时间:2024/06/06 03:26

web服务器并发策略无外乎从连接方式和IO策略上做文章了。

连接方式有短连接和长连接之分,并且也有单进程和多进程之分。

IO策略有阻塞和非阻塞之分,也有同步和异步之分。

以上这些概念不做过多解释,关键看看有哪些组合,其实常见的web服务器并发策略就是这些方式的组合。

  • 一个进程处理一个连接,非阻塞I/O
     这种策略下又分为:
    1)主进程使用非阻塞啊accept()来接收连接,当建立连接后,主进程将任务分配给空闲的子进程来处理
    2)所有子进程使用阻塞accept()来竞争接收连接,一旦一个子进程建立连接后,它将继续进行处理
    其中,apache prefork采用方式2,这样的好处是简单和健壮,子进程间不受干扰,但缺点很明细,占用内存很高,并且进程的新建和销毁也很耗性能。 
  • 一个线程处理一个连接,非阻塞I/O
    apache worker采取这种模式,可以减少资源的消耗,但由于线程间共享数据,因此互相之间会有影响,另外线程间的切换也很消耗资源
  • 一个进程处理多个连接,非阻塞I/O
    基于多路I/O就绪通知,基于epoll方式会表现良好 
  • 一个进程处理多个连接,异步I/O
    不够成熟,应用较少