使用服務(wù)器內(nèi)存交換提升性能的三大場景
Linux內(nèi)核使用活躍與不活躍的內(nèi)存系統(tǒng)管理服務(wù)器的內(nèi)存資源。如果你的Linux服務(wù)器負(fù)載的資源過多,可能由幾大原因引起:不足以加載應(yīng)用的內(nèi)存或者緩存了所有應(yīng)該隱藏的文件,或者太嚴(yán)重依賴Linux內(nèi)存交換。
那么可以基于Linux內(nèi)存使用率***實踐優(yōu)化服務(wù)器,如將不活躍內(nèi)存移到交換區(qū)。當(dāng)然,在解決難題之前,每個獨立的負(fù)載問題要求Linux內(nèi)存分析。下面我們具體來看看一些場景及其解決方案。
內(nèi)存空間不足而無法加載應(yīng)用
讓一臺沒有足夠內(nèi)存的服務(wù)器去加載應(yīng)用,這會出現(xiàn)內(nèi)存短缺的情況。服務(wù)器會在緩沖區(qū)顯示相對有限的內(nèi)存數(shù)量,相應(yīng)地,交換空間也使用得多。最簡單的方法就是添加更多內(nèi)存。不過優(yōu)化Linux內(nèi)存交換也能提升性能。確保不活躍內(nèi)存頁盡早交換出去,為所需的內(nèi)存頁騰出空間。
如何讓服務(wù)器開始快速交換?使用如下命令:echo 80 > /proc/sys/vm/swappiness。同時,使用下面語句:vm.swappiness = 80,將參數(shù)寫入the /etc/systcl.conf file中。如果這還不能給你更多內(nèi)存加載應(yīng)用,那么就采取添加更多物理內(nèi)存給服務(wù)器。
緩存文件時內(nèi)存空間不足
如果你感覺緩存文件可能會出現(xiàn)內(nèi)存不足的話,按照下面方法計算:如果可用緩存與緩存內(nèi)存低于總RAM的30%,那么服務(wù)器可能遭遇內(nèi)存不足。接下來檢查/proc/meminfo的內(nèi)容。如果不活躍(文件)內(nèi)存總量明顯高于緩存總量,那么服務(wù)器沒有足夠可用內(nèi)存去緩存文件。在釋放更多緩存時,首先查明是何種原因?qū)е露倘薄?/p>
如果Linux載入的程序要求太多內(nèi)存的話,除了添加更多物理RAM內(nèi)存別無他法。然而,使用內(nèi)存的系統(tǒng)其它部分也可能導(dǎo)致緩存短缺。例如,將修改后的文件提交到磁盤可能需要很長時間。如果是這樣,你會在投個程序中看到一個相對高的wa(等待I/O)參數(shù),在/proc/meminfo會看見Dirty參數(shù)有個相對較高的值。如果是這樣,修改磁盤性能是關(guān)鍵,能獲得更好的內(nèi)存性能。
內(nèi)存交換用得太頻繁
如果交換用得太多,vmstat監(jiān)控工具會顯示高si與so(換進(jìn)與換出)動作。交換空間幾乎填滿,服務(wù)器可能的免費內(nèi)存很低。
為了優(yōu)化Linux內(nèi)存,首先調(diào)查交換頻繁的根源。通常,如果只有不活躍內(nèi)存在交換區(qū),那就不該有壓力。在/proc/meminfo中,看交換量是否用得比不活躍內(nèi)存的量還多。如果是,活躍內(nèi)存頁交換得很好,就算Linux內(nèi)核需要經(jīng)常訪問活躍內(nèi)存頁。系統(tǒng)需要更多物理內(nèi)存。
如果交換處于壓力下,并分配了大量緩存,通過增加swappiness參數(shù),可在服務(wù)器上減輕內(nèi)存負(fù)載。更高的swappiness值讓內(nèi)核更快將內(nèi)存頁放到磁盤,減輕來自緩存的壓力,讓活躍內(nèi)存得到更多可用內(nèi)存。
更高的swappiness參數(shù)實際上降低了磁盤震蕩,震蕩通常由頁頻繁地?fù)Q入換出而引起。增加的swappiness只是確保頁移到應(yīng)該待的交換區(qū),使得服務(wù)器上的交換動作緩慢下來。不過要實現(xiàn)這樣的目的,需要為服務(wù)器添加更多交換區(qū)。