httpd在linux下默认使用prefork,我们网站的服务器,在编译httpd的时候,就指定了使用worker模式。
简单了解 worker模式与 prefork模式
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
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模式下这些参数的默认配置值 :