2011/08/31

Apache with event MPM mode

最近把apache當forward proxy來使用,遇到反應速度嚴重下降的問題。

Apache在prefork mode下,一個process同時間只能服務一條connection,而worker mode一個thread只能服務一條connection,他們都是blocking mode,一旦所有的process/thread被block住,就沒辦法再服務新的connection,系統全部都在等待io,CPU使用率相對很低。

Event MPM mode可以解決上述問題。

(題外話,就算是把fd設定成non-blocking,搭配polling (select())的方式,其反應速度仍遠不及event-driven,因為fd數目越多polling的時間就會越久,而且polling也是很浪費CPU的。Event-driven的高效能要在current connection量大時才看得出來,特別是keep-alive的connection。)

不過官方網站寫著event mode目前還在實驗階段:
Warning
This MPM is experimental, so it may or may not work as expected.

編譯與設定可以參考

Configure參數
./configure --with-mpm=event #主要是加這個參數

httpd.conf設定檔
        
     StartServers         1
     ServerLimit          1
     MaxClients           50
     MinSpareThreads      1
     MaxSpareThreads      10
     ThreadsPerChild      50
     MaxRequestsPerChild  0


Benchmark在上面的連結中也有提到。



沒有留言:

張貼留言