天天看點

apache 常用的兩種工作模式和差別prefork 模式worker模式

prefork 模式

  • prefork是Unix平台上的預設(預設)MPM,使用多個子程序,每個子程序隻有一個線程。每個程序在某個确定的時間隻能維持一個連接配接,效率高,但記憶體占用量比較大。

    這個多路處理子產品(MPM)實作了一個非線程型的、預派生的web伺服器,它的工作方式類似于Apache 1.3。它适合于沒有線程安全庫,需要避免線程相容性問題的系統。它是要求将每個請求互相獨立的情況下最好的MPM,這樣若一個請求出現問題就不會影響到其他請求。

worker模式

  • worker使用多個子程序,每個子程序有多個線程,每個線程在某個确定的時間隻能維持一個連接配接,記憶體占用量比較小,适合高流量的http伺服器。缺點是假如一個線程崩潰,整個程序就會連同其任何線程一起”死掉”,是以要保證一個程式在運作時必須被系統識别為”每個線程都是安全的”。

    此多路處理子產品(MPM)使網絡伺服器支援混合的多線程多程序。由于使用線程來處理請求,是以可以處理海量請求,而系統資源的開銷小于基于程序的MPM。但是它也使用了多程序,每個程序又有多個線程,以獲得基于程序的MPM的穩定性。