歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 淺談linux性能調優之十:資源分配規劃

淺談linux性能調優之十:資源分配規劃

日期:2017/3/1 15:54:02   编辑:關於Linux
淺談linux性能調優之十:資源分配規劃 淺談linux性能調優之九:改變系統默認限制 http://www.2cto.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 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 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的體系結構)
Copyright © Linux教程網 All Rights Reserved