最新消息:

Apache 设置模块参数

在配置文件 httpd.conf 中加入相关参数,设置 prefork 模块相关参数如下,这里重点说明各配置项的意义。一个典型的 profork 模块参数如下所示:

<IfModule mpm_prefork_module>
 StartServers 5
 MinSpareServers 5
 MaxSpareServers 10
 ServerLimit 4000
 MaxClients 4000
 MaxRequestsPerChild 0
</IfModule>

说明:

  • StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态地取决于负载的轻重,所有一般没有必要调整这个参数。
  • MinSpareServers:设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于 MinSpareServers,那么 Apache 将以最大每秒一个的速度产生新的子进程。只有在非常繁忙的机器上才需要调整这个参数,通常不建议将此参数的值设置的太大,除非你的机器非常繁忙。
  • MaxSpareServers:设置空闲子进程的最大数量。如果当前有超过 MaxSpareServers 数量的空闲子进程,那么父进程将杀死多余的子进程。只有在非常繁忙的机器上才需要调整这个参数,通常不建议将此参数设置的太大,除非你的机器非常繁忙。如果将该指令的值设置为比 MinSpareServers 小,Apache 将会自动将其修改成“MinSpareServers+1”。
  • ServerLimit:服务器允许配置的进程数上限。只有在你需要将 MaxClients 设置成高于默认值 256 时才需要使用。要将此指令的值保持和 MaxClients 一样。修改此指令的值必须完全停止服务后再启动才能生效,以 restart 方式重启动将不会生效。
  • MaxClients:用于伺服客户端请求的最大请求数量(最大子进程数),任何超过 MaxClients 限制的请求都将进入等候队列。默认值是 256,如果要提高这个值必须同时提高 ServerLimit 的值。笔者建议将初始值设为(以 MB 为单位的最大物理内存/2),然后根据负载情况进行动态调整。比如一台 4GB 内存的机器,那么初始值就是 4000/2=2000。
  • MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。到达 MaxRequestsPerChild 的限制后,子进程将会结束。如果 MaxRequestsPerChild 为"0",子进程将永远不会结束。将 MaxRequestsPerChild 设置成非零值有两个好处:可以防止(偶然的)内存泄漏无限进行而耗尽内存;给进程一个有限寿命,从而有助于当服务器负载减轻时减少活动进程的数量。

目前大多数服务器都使用了 prefork 模式,如果需要采用 worker 模式,其典型的参数如下所示:

<IfModule mpm_worker_module>
 StartServers 5
 ServerLimit 20
 ThreadLimit 200
 MaxClients 4000
 MinSpareThreads 25
 MaxSpareThreads 250
 ThreadsPerChild 200
 MaxRequestsPerChild 0
</IfModule>

说明:

  • StartServers:设置服务器启动时建立的子进程数量。因为子进程数量动态地取决于负载的轻重,所有一般没有必要调整这个参数。
  • ServerLimit:服务器允许配置的进程数上限。只有在你需要将 MaxClients和ThreadsPerChild 设置成需要超过默认值 16 个子进程时才需要使用这个指令。不要将该指令的值设置的比 MaxClients 和 ThreadsPerChild 需要的子进程数量高。修改此指令的值必须完全停止服务后再启动才能生效,以 restart 方式重新启动将不会生效。
  • ThreadLimit:设置每个子进程可配置的线程数 ThreadsPerChild 上限,该指令的值应当和 ThreadsPerChild 可能达到的最大值保持一致。修改此指令的值必须完全停止服务后再启动才能生效,以 restart 方式重新启动将不会生效。
  • MaxClients:用于伺服客户端请求的最大接入请求数量(最大线程数)。任何超过 MaxClients 限制的请求都将进入等候队列。默认值是 400,16(ServerLimit)乘以 25(ThreadsPerChild)的结果。因此要增加 MaxClients 时,你必须同时增加 ServerLimit 的值。笔者建议将初始值设为以 MB 为单位的最大物理内存/2,然后根据负载情况进行动态调整。比如一台 4GB 内存的机器,那么初始值就是 4000/2=2000。
  • MinSpareThreads:最小空闲线程数,默认值是“75”。这个 MPM 将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。
  • MaxSpareThreads:设置最大空闲线程数。默认值是“250”。这个 MPM 将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。

MaxSpareThreads 的取值范围是有限制的。Apache 将按照如下限制自动修正你设置的值:worker 要求其大于等于 MinSpareThreads 加上 ThreadsPerChild 的和。

  • ThreadsPerChild:每个子进程建立的线程数。默认值是 25。子进程在启动时建立这些线程后就不再建立新的线程了。每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。
  • MaxRequestsPerChild:设置每个子进程在其生存期内允许伺服的最大请求数量。

需要特别注意的是,配置文件中并没有关于 prefork 和 worker 的相关配置项,以上两段内容需要手动添加,并且要按实际情况对以上参数进行调整。

对于自己安装的 httpd,我们可以通过参考编译时的参数判断使用的是何种工作模式,但如果是别人编译安装的 httpd 可能就无法判断。这时可以使用以下命令判别:

[root@CentOS ~]# /usr/local/apache2/bin/httpd -l

好了,Apache 设置模块参数 就分享到这里,非常感谢你的来访。如果你喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » Apache 设置模块参数

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者