prefork是Apache默认的多处理模块。作为一个系统管理员,一般处理低流量的服务器。你不需要知道Apache如何同时处理多个进程。即使我不知道这一切。但过了些日子,当你开始使用高负载服务器的工作,你需要优化Apache。此时需要重点了解多处理模块Apache是如何工作的。
Apache的prefork默认配置
下面是默认的prefork多处理模块配置,如下Apache的版本。
对于Apache 2.4
StartServers 3
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 400
MaxConnectionsPerChild 0
对于Apache 2.2
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
prefork配置指令:
1.
StartServers
:这个指令定义子服务器进程的数量来创建在Apache启动。进程数根据服务器负载动态增加,所以你不必正常更改此值。
2.
MinSpareServers
:这是空闲子进程的最小数量,它总是等待进入的连接运行。如果空闲进程低于MinSpareServers值,Apache会启动一个子进程来维持最低限度的备用服务器。
3.
MaxSpareServers
:这是其可以是在空闲状态的处理最大数目。如果空闲进程高于MaxSpareServers的值,父进程杀死多余的空闲子进程。
4.
MaxClients
和
MaxRequestWorkers
:这是最重要的prefork指令。这个定义的最大请求数可以被Apache服务器来处理。如果连接或请求的最大数量超过该值,所有额外的请求需要排队等待。 硬件允许的最大值,保持这个值。请参阅下面的细节,如何设置这个值。 a. 查看你的系统内存总数。 b. 查看多少RAM可用于Apache服务器。 c. 单个Apache进程使用的平均内存。 这个值 <=(适用于Apache的总内存)/(由一个进程使用的内存
)5。
MaxRequestsPerChild
或
MaxConnectionsPerChild
:这是请求的最大数可以通过在其中的子进程来处理。例如,如果您将此值设置为100。任何新的子进程将有助于高达100个请求,然后由父进程杀死。在那个地方的Apache启动一个新的子进程。 我们建议保持(至少大于0)这个值。设置该参数为0表示进程将永不过期,可能造成内存泄漏问题,消耗高的内存。
当改变 StartServers,MinSpareServers 和 MinSpareServers 指令的值:
你需要改变低流量的服务器,这些指令。如果你正在处理以每分钟数千请求的服务器,那么你只需要改变这些值。但首先,你必须了解在Apache中的生成新进程的频率
- Apache 2.2 可以每秒产生一个进程。
- Apache 2.4 最多每秒可生成在32个进程。当最小空闲备用进程少于MinSpareServers值,Apache开始产生1进程并等待一秒钟,如果它仍然较少,Apache启动2个进程,等待一秒钟,如果它仍然,apache启动4个进程,并等待一秒钟,同样Apache可以启动高达每秒32个子进程,并反复进行,直到最小的备用过程超过的MinSpareServers值。
对于如果你的服务器和Apache 2.2运行例子一样,那么Apache只能启动每秒一个备用进程。这意味着,如果你的服务器经常超过每秒1个连接,那么您需要调整所有这些参数始终保持运行一些空闲进程。但也要看进程需要多少时间才能完成。 同样地,如果服务器是Apache 2.4运行,您可能需要很少更改这些参数,因为Apache 2.4可以最高可达每秒32个子进程。