技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Apache --> apache httpd worker模式工作原理及配置

apache httpd worker模式工作原理及配置

浏览:3107次  出处信息

httpd在linux下默认使用prefork, 我们网站的服务器,在编译httpd的时候,就指定了使用worker模式。

简单了解 worker模式与 prefork模式

worker : httpd在启动的时候,会由root进程派生出几个子进程,每个子进程中会有固定数量的线程,到时候提供服务的,就是这些线程,也就是说一个进程能够同时提供多次服务。

prefork : httpd使用进程来提供服务,每个进程在同一时间提供一次服务。

worker 参数配置

由于我比较关注 worker 模式, 所以就特别关注了一下 worker 的一些参数配置。

worker的参数主要有:ServerLimit,ThreadLimit,StartServers,MinSpareThreads,
MaxSpareThreads,ThreadsPerChild,MaxClients,MaxRequestsPerChild。

  • ServerLimit 是设置httpd root进程能够产生的最大进程数限制
  • ThreadLimit 是设置每个httpd子进程能够产生的最大服务线程限制
  • StarServers 是httpd刚启动时,root进程创建的子进程数
  • MinSpareThreads 顾名思义,就是最少的空闲线程数
  • MaxSpareThreads 就是最多的空闲线程数
  • ThreadsPerChild 每个子进程产生的线程数
  • MaxClients httpd同时处理的最大请求数
  • MaxRequestsPerChild 每个子进程提供的请求服务数,如果达到该值,则该子进程结束,由root进程根据需要再次派生新的子进程

其中几个参数之间的联系还是很重要的:

  • ServerLimit 限制了 MaxClients 和 ThreadsPerChild。 因为 MaxClients / ThreadsPerChild = 子进程数, 而子进程数目是受限于 ServerLimit
  • MaxSpareThreads 需要 大于等于 MinSpareThreads + ThreadsPerChild 。 根据我的理解,这也是合理的,因为子进程产生时,线程的数目已经是固定的了,那就需要 [ MinSpareThreads, MaxSpareThreads ] 中有一个线程数对ThreadsPerChild取余能够为0。
下面看看 worker模式下这些参数的默认配置值 :
<IfModule worker.c>
     ServerLimit      16
     ThreadLimit     64
     StartServers     3
     MinSpareThreads  75
     MaxSpareThreads  250
     MaxClients       400  # 16 * 25
     ThreadsPerChild  25
     MaxRequestsPerChild   10000
</IfModule>

建议继续学习:

  1. Nginx进程管理之worker进程    (阅读:3735)
  2. Nginx的master和worker进程间的通信    (阅读:3608)
  3. Apache的prefork模式和worker模式的比较    (阅读:2604)
  4. 做事,评估的三点原则    (阅读:1868)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1