Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1800780
  • 博文数量: 293
  • 博客积分: 10127
  • 博客等级: 上将
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-12 19:05
文章分类

全部博文(293)

文章存档

2011年(11)

2010年(282)

我的朋友

分类: LINUX

2010-08-22 01:43:35

apache功能强大,应用十分广泛。

为了使不同平台的apache都能得到优化,apache支持MPM模块。

linux/unix下的好的2个模块分别为prefork和worker。

最初设计unix的时候,并没有线程这个概念,所以无论系统内核还是应用软件,都不支持线程的应用。最小的作业单位是进程。

windows是一个完全支持线程的操作系统。线程比进程更小,能提高系统效率,减少系统开支。

现在无论是linux还是freebsd,都在积极改进,在内核中加入线程的支持。

apache本身即支持线程也支持进程。它怎么实现的呢?就是用MPM。

prefork模块:基于进程的web服务器

默认配置段如下:

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0

prefork的工作原理是,由主控制进程生成“StartServers”个子进程,当空闲进程小于MinSpareServers时,系统生成一个又一个进程,直到进程数达到MaxSpareThreads;而MaxClients设置允许的最大客户连接数。每个子进程处理服务请求次数由MaxRequestPerChild定义。 缺省的设置值为0,即响应无限此请求。

worker模块:基于线程的web服务器

默认配置如下:

StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0

worker的工作原理是,由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;而MaxClients设置允许的最大线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。每个子线程处理服务请求次数由MaxRequestPerChild定义。 缺省的设置值为0,即响应无限此请求。

阅读(1403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~