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>