Linux報swap空間佔用太高,但物理內存還有空餘

收到報警,swap空間佔用太高,登陸到系統查看內存使用詳情,看到物理內存還有不少未使用node

 問題分析

 Swap配置對性能的影響
分配太多的Swap空間會浪費磁盤空間,而Swap空間太少,則系統會發生錯誤。若是系統的物理內存用光了,系統就會跑得很慢,但仍能運行;若是Swap空間用光了,那麼系統就會發生錯誤。例如,Web服務器能根據不一樣的請求數量衍生出多個服務進程(或線程),若是Swap空間用完,則服務進程沒法啓動,一般會出現「application is out of memory」的錯誤,嚴重時會形成服務進程的死鎖。所以Swap空間的分配是很重要的。
一般狀況下,Swap空間應大於或等於物理內存的大小,最小不該小於64M,一般Swap空間的大小應是物理內存的2-2.5倍。但根據不一樣的應用,應有不一樣的配置:若是是小的桌面系統,則只須要較小的Swap空間,而大的服務器系統則視狀況不一樣須要不一樣大小的Swap空間。特別是數據庫服務器和Web服務器,隨着訪問量的增長,對Swap空間的要求也會增長,通常來講對於4G 如下的物理內存,配置2倍的swap,4G 以上配置1倍。
另外,Swap分區的數量對性能也有很大的影響。由於Swap交換的操做是磁盤IO的操做,若是有多個Swap交換區,Swap空間的分配會以輪流的方式操做於全部的Swap,這樣會大大均衡IO的負載,加快Swap交換的速度。若是隻有一個交換區,全部的交換操做會使交換區變得很忙,使系統大多數時間處於等待狀態,效率很低。用性能監視工具就會發現,此時的CPU並不很忙,而系統卻慢。這說明,瓶頸在IO上,依靠提升CPU的速度是解決不了問題的。linux

問題解決

swap配置優化:數據庫

控制swap使用的系統參數:swappiness,wappiness的值的大小對如何使用swap分區是有着很大的聯繫的。服務器

swappiness=0的時候表示最大限度使用物理內存,而後纔是 swap空間,swappiness=100的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。linux的基本默認設置爲60,具體以下:app

通常默認值都是60   工具

[root@swnode2 ~]# cat /proc/sys/vm/swappiness
60性能

也就是說,你的內存在使用到100-60=40%的時候,就開始出現有交換分區的使用。你們知道,內存的速度會比磁盤快不少,這樣子會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,因此咱們在操做系統層面,要儘量使用內存,對該參數進行調整。優化

 

臨時調整的方法以下,咱們調成10:
[root@swnode2 ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@swnode2 ~]# cat /proc/sys/vm/swappiness
10
這只是臨時調整的方法,重啓後會回到默認設置的操作系統

 

要想永久調整的話,須要將
須要在/etc/sysctl.conf修改,加上:
[root@swnode2 ~]# cat /etc/sysctl.conf.net

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
vm.swappiness=10

激活設置:

#sysctl -p

 

知識點

簡單地說這個參數定義了系統對swap的使用傾向,默認值爲60,值越大表示越傾向於使用swap。能夠設爲0,這樣作並不會禁止對swap的使用,只是最大限度地下降了使用swap的可能性。


經過sysctl -q vm.swappiness能夠查看參數的當前設置。


修改參數的方法是修改/etc/sysctl.conf文件,加入vm.swappiness=xxx,並重起系統。這個操做至關因而修改虛擬系統中的/proc/sys/vm/swappiness文件,將值改成XXX數值。

 

 

參考連接:https://blog.csdn.net/lufeisan/article/details/53339991

https://blog.csdn.net/ly890700/article/details/73695750

相關文章
相關標籤/搜索