淺談linux效能調優之十:資源分派規劃

來源:互聯網
上載者:User

淺談linux效能調優之十:資源分派規劃 淺談linux效能調優之九:改變系統預設限制http://www.bkjia.com/os/201307/228395.html  我們都瞭解apache的兩種工作模式,這節我們以prefork模式來考慮apache應用的配置!首先說說apache的prefork工作模式:prefork:特點穩定,對動態網頁面支援好!        prefork的工作原理是,控制進程在最初建立"StartServers"個子進程後,為了滿足"MinSpareServers"設定的需要建立一 個進程,等待一秒鐘,繼續建立兩個,再等待一秒鐘,繼續建立四個……如此按指數級增加建立的進程數,最多達到每秒32個,直到滿足 MinSpareServers設定的值為止。這就是預派生(prefork)的由來。這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷 以增加效能。        MaxSpareServers設定了最大的空閑進程數,如果空閑進程數大於這個值,apache會自動kill掉一些多餘進程。這個值不要設得過大,但 如果設的值比MinSpareServers小,apache會自動把其調整為MinSpareServers+ 1。如果網站負載較大,可考慮同時加大MinSpareServers和MaxSpareServers。        MaxRequestsPerChild設定的是每個子進程可處理的請求數。每個子進程在處理了"MaxRequestsPerChild" 個請求後將自動銷毀。0意味著無限,即子進程永不銷毀。雖然預設設為0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:a.可防止意外的記憶體流失;b.在伺服器負載下降的時侯會自動減少子進程數。        因此,可根據伺服器的負載來調整這個值。但也不能太小,不然系統不斷的開啟新的apache進程,造成資源浪費。MaxClients 是這些指令中最為重要的一個,設定的是apache可以同時處理的請求,是對apache效能影響最大的參數。其預設值 150是遠遠不夠的,如果請求總數已達到這個值(可通過ps -ef|grep http|wc -l來確認),那麼後面的請求就要排隊,直到某個已處理請求完畢。這就是系統資源還剩下很多而http訪問卻很慢的主要原因。系統管理員可以根據硬體設定 和負載情況來動態調整這個值。雖然理論上這個值越大,可以處理的請求就越多,但apache預設的限制不能大於256。如果把這個值設為大於256,那麼 apache將無法起動。事實上,256對於負載稍重的網站也是不夠的。 ###################################################################<IfModule prefork.c>StartServers       8MinSpareServers    5MaxSpareServers   20ServerLimit      256MaxClients       256    一個伺服器的絕不至於此!MaxRequestsPerChild  4000</IfModule>###################################################################     看看下面的資料,我使用ab做壓力測試:ab -c 500 -t 60 http://127.0.0.1/index.html    看看一個apache進程佔多少記憶體:  看看top的man文檔:注意這幾列        o: VIRT  --  Virtual Image (kb)          The  total  amount  of  virtual  memory used by the task.  It includes all          code, data and shared libraries plus pages that  have  been  swapped  out.          (Note:  you  can  define  the STATSIZE=1 environment variable and the VIRT          will be calculated from the /proc/#/state VmSize field.)           VIRT = SWAP + RES.        p: SWAP  --  Swapped size (kb)          The swapped out portion of a task’s total virtual memory image.        q: RES  --  Resident size (kb)          The non-swapped physical memory a task has used.     個人認為:swap可手動添加,而實體記憶體是主要的限制,可以看出一個httpd佔3.3M, MaxClients數量便可以這樣計算:    MaxClients = ( 實體記憶體*0.8 - 乾淨開機已使用記憶體 )/ 3.3M (注意要配置ServerLimit,MaxClients要小於ServerLimit)     oracle就是一個吃記憶體的資料庫,開啟是便分配上G記憶體給SGA,內部幾個重要記憶體區可手動調整,在規劃時,一定要注意系統的安全性與記憶體的使用率,(不瞭解的可以看看oracle的體繫結構)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.