前陣子總是發現 httpd 程序的使用記憶體總量居然達到了上百Mb,有時甚至上Gb,真是誇張。Apache 是架在 Squid 的後面,照理說不應該出現這種情況。通過排查,發現是 Apache 中開啟了持續長連接配接導緻。
Apache 程序的記憶體使用是 "遞增/漸進" 式的,也就是在目前程序的 httpd 過程中,記憶體使用是持續增加的,也就是說在該程序退出之前,記憶體是持續增加的。主要是由于下面三個參數來控制。
KeepAlive On 設定是否要開啟持續長連接配接,由于前面有 Squid,是以在這裡把它打開
MaxKeepAliveRequests 50 在一次持續長連接配接中,最多允許接收幾次請求,如果設定太大的話,很可能導緻 httpd
程序持續消耗很多記憶體,是以可以選擇一個适當的值,因為重新建立一個新的程序也是要有一定開銷的
KeepAliveTimeout 5 設定一個長連接配接在沒有活動後等待多久自動關閉,可以設定小一點,不過跟上面的類似,如果太小的話,也會導緻頻繁建立新的程序
現在,調整完上面的參數後,會發現 httpd 程序不再象以前那樣狂吃記憶體了。
本文轉自葉金榮51CTO部落格,原文連結:http://blog.51cto.com/imysql/310592,如需轉載請自行聯系原作者