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>