修正 Apache Worker MPM 與 APC 設定

| 四月 22, 2007 | 2個迴響 | 沒有引用 | 1629 reads | Size: L, M, S | Edit: P, C |
| Category: Server. |

    最近觀察主機,常常會難連線,可是一切卻又運作中。觀察圖表,發現是記憶體暴增,然後就吃到 SWAP 去,結果就是狂 hang 住。應該是常常有 spam 公司來幫忙測試主機,所以 request 太多,就暴了!

    現在小小的主機、慢慢的 CPU、少少的 RAM 實在沒辦法像 Pixnet 這樣借人家測主機XD。所以只好修正一下參數,目前測試下來,這樣的設定是最 OK 的,雖然 Request 多的時候還是會連線稍慢一點點,不過至少 Performance好很多。

    目前主機配置是:PIII-800、384Ram,就是這麼遜,所以各位 Spam 大哥不要來亂了!

    Worker MPM 配置如下:


    StartServers 1
    ServerLimit 3
    MaxClients 100
    MinSpareThreads 25
    MaxSpareThreads 50
    ThreadLimit 50
    ThreadsPerChild 50
    MaxRequestsPerChild 10000

    分享一下參數設定的心得好了:

    StartServers」就是剛啟動時要先生出來的 httpd 程序數量,而「ServerLimit」定義了最大程序數量,每個程序裡面會包含「ThreadsPerChild」個 Thread(每個 Thread都可以應對一個 Request,不需要傳統那樣一個 Request 就需要一個程序。而當不夠的時候,他會自動增加 Thread 或 Child 來處理),「MinSpareThreads」和「MaxSpareThreads」定義了最少和最多的空閒 Thread 數量。接著,這邊用「ThreadLimit」來限制了每個 Child 的最大 Thread 數量。而「ThreadPerChild」和「ServerLimit」的乘績決定了「MaxClients」的上限,也就是能夠承受的最大 Request 數量。最後是「MaxRequestsPerChild」,決定了 Child 接受了幾個 Request 之後就要關閉,等待如果需要才重新產生一個程序。預設是零,也就是不結束,不過我比較喜歡重新產生,可以避免安全問題,更重要的是不需要那麼多程序時不會佔用著資源。

    調整的時候,可以搭配 ab 壓力測試:

    ab -c 同時連線數量 -n 每個連線的Request數量

    這個設定可以讓我的主機 Lifetype 部分稱到 ab -c 50 -n500 才 timeout 結束,但是 SWAP 還在 50M 以下。如果是靜態網頁、galler2、 其他 php 等等,更可以撐到 ab -c 100 -n 1000 以上沒問題。接著會觀察看看,希望不會再 hang 死。

     

    另外,也調整了一下 apc 的設定,之前的 ttl 實在太可怕,迴響、文章發表更新,都要等很久,目前用了一陣子很滿意的設定是:

    [APC]
    apc.stat=0
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=128
    apc.ttl=300
    apc.user_ttl=300
    apc.num_files_hint=1024
    apc.mmap_file_mask=/tmp/apc.XXXXXX
    apc.enable_cli=1

    ttl 設定成 300 second,這樣快取命中率還是高達 96%,快取大約是 50M 上下,快取表現、更新速度也都符合需要。

    參考看看。


    隨機文章:
    » [FreeBSD] Apache, MySQL, PHP
    » [FreeBSD] 加速你的 PHP - APC
    » [Apache] 壓縮你的網頁 - mod_deflate/mod_gzip、ob_gzhandler、zlib
    » 2007 留言板
    » [瀏覽器] Sleipnir 2 beta5 / Firefox 1.5 中文beta - Released


Leave A Comment:













   


2 迴響 of "修正 Apache Worker MPM 與 APC 設定"

kakashiRe: 修正 Apache Worker MPM 與 APC 設定 By kakashi @ 2008 五月 26, 00:53 :

想請問一下你使用mpm worker真的會變快嗎?
我自己是用apache2.2.8來測試過,結果用mpm worker和event
都比不上mpm prefork的速度,我是用ab來測的,一秒能request的數字掉了很多,不知道你的機器是怎麼設定的<(_ _)>

ajer001Re: 修正 Apache Worker MPM 與 APC 設定 By ajer001 @ 2008 五月 26, 22:45 :

kakashi :
我知道的是 prefork 比較穩定,
不過 worker 比較省資源、效能比較好(?)。
我的感覺大概是這樣,壓力測試的話,其實我沒有去操過他們的極限XD