排列五开奖号码走势图|排列五开奖公告
首頁 > 精華文章, 編程學習記錄 > WDCP內存優化相關的設置

201701月16

WDCP內存優化相關的設置

作者:admin 0 Comments 發表評論

今天折騰了很久,就在研究怎么優化WDCP的內存。原因是買的小內存的vps總是擔心內存不足,在后臺看到1G的內存,很快就實際占用了好幾百M左右。如果放多個網站,豈不是馬上就內存不足了。在前面的文章中實際上也是擔心VPS內存不足的問題:http://www.c7hk.com/wdcp-duozhan.html

雖然搞清楚了建立一個新的網站就要占用更多的內存和進程,但是還是不明白怎么進行優化。于是在度娘上找到,看到很多相關的資料,優化的關鍵與HTTPD進程的多少有關系,而這個東西又與下面幾個量有關系:

ServerLimit 、StartServers、MinSpareServers 、MaxSpareServers 、MaxClients、MaxRequestsPerChild

這幾個量的相關解釋,我看了很多篇文章,但是沒有一篇講的透徹清楚的。

先來看一個比較有代表性的解釋:

ServerLimit 最大客戶數
StartServers 服務器啟動時建立的子進程數量
MinSpareServers 最小空閑子進程數
MaxSpareServers 最大空閑子進程數
MaxClients 同一時間客戶端最大接入請求的數量
MaxRequestsPerChild 每個子進程在其生存期內允許伺服的最大請求數量

類似上面的這種解釋很多,但是都說的不夠清晰。看了幾個小時的網上資料,還是理解的很模糊,下面把我自己的理解記錄下來:

1,StartServers 服務器啟動時建立的HTTPD進程數量,這個應該屬于父進程

2,MinSpareServers 最小HTTPD空閑進程數量,這個雖然是空閑的父進程,但是它是有作用的,它的存在能夠減少請求突然到來時,HTTPD進程數量不夠,產生新的HTTPD進程的時間。

3,MaxSpareServers 最大HTTPD空閑進程數量,這個用來控制,如果空閑HTTPD進程太多,會占用掉大量內存空間。

4,MaxClients 這個參量最難理解,我個人理解是,每個訪客訪問網站時,網站的HTTPD進程用來處理和訪客的交互操作,而每個HTTPD的大小每個網站應該是有所區別的。這個MaxClients就代表了網站的HTTPD父進程的最大數量。比如每個HTTPD占用20M內存空間,你VPS的剩余內存空間是200M(剩余空間是指總的內存減去系統以及其它服務已經占用的內存),那么你的MaxClients應該只有200M/20M=10個。此時你最多只能設置為10,如果超過,那么VPS會調用硬盤空間作為內存不足的補充部分,但硬盤空間的訪問速度實際上是很慢的,這樣網站訪問起來,就會有部分用戶感覺很慢。如果你這個數值設置的很小,也會有問題,比如本來要10個HTTPD才能滿足需求,但你設置為了8,那么如果有10人訪問,就會有后面的2人訪問會比較慢,等到前面的8人鏈接斷開,這2人的訪問才會快。(這里理解不清楚,不明白訪客訪問與HTTPD父進程和子進程之間的關系

5,MaxRequestsPerChild 每個子進程在其生存期內允許伺服的最大請求數量,默認為0,則子進程不會自動銷毀,這樣子進程就可能占用內存越來越多,如果設置為1000,那么子進程在處理了1000個請求的時候會 被父進程自動銷毀,從而產生新的子進程,這樣內存消耗就降低了。(跟上面一樣,不明白訪客訪問與HTTPD父進程和子進程之間的關系),但這里我也不明白怎么看子進程,還有子進程處理請求到底是處理的什么?

雖然不太明白上面這些參量的意思,但是減小內存消耗確實知道怎么去控制了,比如我修改成這個樣子時,內存消耗就比較大:

<IfModule mpm_prefork_module>
ServerLimit 128
StartServers 5
MinSpareServers 18
MaxSpareServers 30
MaxClients 128
MaxRequestsPerChild 1000
</IfModule>

原因是,我設置了最小空閑HTTPD進程為18個,這樣的話,就算沒有人訪問,最少也要18個空閑HTTPD進程在等待狀態。如果你網站沒什么流量,設置這么多的空閑HTTPD進程就完全是浪費,此時查看后臺的實際內存占用情況,如圖所示:

實際內存占用截圖

而如果設置成下面這個樣子,內存消耗就要小的多:

<IfModule mpm_prefork_module>
ServerLimit 128
StartServers 5
MinSpareServers 5
MaxSpareServers 6
MaxClients 128
MaxRequestsPerChild 1000
</IfModule>

后臺實測在200M左右:

內存占用截圖

原因很簡單,你設置的空閑HTTPD進程只有5個了,最多是6個,空閑HTTPD進程相差10多個,而上面兩幅圖都是在訪客差不多的情況下截圖的,訪客產生的HTTPD進程應該是差不多的。這樣就能減小后臺的內存占用,不過如果短時間內流量暴漲,新的HTTPD進程只能一個個的產生,這樣會降低訪問速度。具體怎么樣,可以自己測試,也可以查看蜘蛛的抓取記錄平均耗時來了解端倪。

而至于HTTPD是在什么樣的情況下產生,什么樣的情況下消失,我則弄不清楚了。

推薦閱讀相關文章:精華文章 編程學習記錄

本文地址:http://www.c7hk.com/wdcp-neicunyouhua.html
版權所有 © 轉載時必須以鏈接形式注明作者和原始出處!

本文目前尚無任何評論.

發表評論

排列五开奖号码走势图