使用服務器內存交換提升性能的三大場景

Linux內核使用活躍與不活躍的內存系統管理服務器的內存資源。如果你的Linux服務器負載的資源過多,可能由幾大原因引起:不足以加載應用的內存或者緩存了所有應該隱藏的文件,或者太嚴重依賴Linux內存交換。

那麼可以基於Linux內存使用率最佳實踐優化服務器,如將不活躍內存移到交換區。當然,在解決難題之前,每個獨立的負載問題要求Linux內存分析。下面我們具體來看看一些場景及其解決方案。

內存空間不足而無法加載應用

讓一臺沒有足夠內存的服務器去加載應用,這會出現內存短缺的情況。服務器會在緩衝區顯示相對有限的內存數量,相應地,交換空間也使用得多。最簡單的方法就是添加更多內存。不過優化Linux內存交換也能提升性能。確保不活躍內存頁儘早交換出去,爲所需的內存頁騰出空間。

如何讓服務器開始快速交換?使用如下命令:echo 80 > /proc/sys/vm/swappiness。同時,使用下面語句:vm.swappiness = 80,將參數寫入the /etc/systcl.conf file中。如果這還不能給你更多內存加載應用,那麼就採取添加更多物理內存給服務器。

緩存文件時內存空間不足

如果你感覺緩存文件可能會出現內存不足的話,按照下面方法計算:如果可用緩存與緩存內存低於總RAM的30%,那麼服務器可能遭遇內存不足。接下來檢查 /proc/meminfo的內容。如果不活躍(文件)內存總量明顯高於緩存總量,那麼服務器沒有足夠可用內存去緩存文件。在釋放更多緩存時,首先查明是何種原因導致短缺。

如果Linux載入的程序要求太多內存的話,除了添加更多物理RAM內存別無他法。然而,使用內存的系統其它部分也可能導致緩存短缺。例如,將修改後的文件提交到磁盤可能需要很長時間。如果是這樣,你會在投個程序中看到一個相對高的wa(等待I/O)參數,在/proc /meminfo會看見Dirty參數有個相對較高的值。如果是這樣,修改磁盤性能是關鍵,能獲得更好的內存性能。

內存交換用得太頻繁

如果交換用得太多,vmstat監控工具會顯示高si與so(換進與換出)動作。交換空間幾乎填滿,服務器可能的免費內存很低。

爲了優化Linux內存,首先調查交換頻繁的根源。通常,如果只有不活躍內存在交換區,那就不該有壓力。在/proc/meminfo中,看交換量是否用得比不活躍內存的量還多。如果是,活躍內存頁交換得很好,就算Linux內核需要經常訪問活躍內存頁。系統需要更多物理內存。

如果交換處於壓力下,並分配了大量緩存,通過增加swappiness參數,可在服務器上減輕內存負載。更高的swappiness值讓內核更快將內存頁放到磁盤,減輕來自緩存的壓力,讓活躍內存得到更多可用內存。

更高的swappiness參數實際上降低了磁盤震盪,震盪通常由頁頻繁地換入換出而引起。增加的swappiness只是確保頁移到應該待的交換區,使得服務器上的交換動作緩慢下來。不過要實現這樣的目的,需要爲服務器添加更多交換區。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章