現象:
信息中心機房一臺Linux服務器運行緩慢,系統服務出現間歇性中止響應,發現此服務器的物理內存是16G,而最初裝機的時候,系統管理人員卻只分配了2G的虛擬內存。查看內存的使用情況,物理內存並無徹底耗盡,但虛擬內存已經耗盡,整個系統CPU負載和磁盤IO都很是高。
問題:
是因爲交換分區不足致使,那麼解決方法就是:將虛擬內存經過虛擬文件的方式增長到8G,系統運行情況明顯好轉。其實虛擬內存並非等到物理內存用盡了才使用的,是否儘可能的使用或不使用swap,在內核空間有一個參數控制。
[root@server ~]# cat /proc/sys/vm/swappiness
60
swappiness=0 的時候表示最大限度使用物理內存,而後纔是swap空間;swappiness=100 的時候表示積極的使用swap分區,
而且把內存上的數據及時的搬運到swap空間裏面。
Linux系統設置多大的交換分區合適呢?爲此,引用紅帽官方文庫裏的一段文字進行淺析說明。
目前Red Hat(紅帽官方)推薦交換分區的大小應當與系統物理內存的大小保持線性比例關係。
不過在小於2GB物理內存的系統中,交換分區大小應該設置爲內存大小的兩倍,若是內存大小多於2GB,交換分區大小應該是物理內存大小加上2GB。
其緣由在於,系統中的物理內存越大, 對於內存的負荷可能也越大。
通常來講能夠按照以下規則設置swap大小:
4G之內的物理內存,SWAP 設置爲內存的2倍。
4-8G的物理內存,SWAP 等於內存大小。
8-64G 的物理內存,SWAP 設置爲8G。
64-256G物理內存,SWAP 設置爲16G。
物理內存 交換分區
小於等於4G 至少2G
4~16G 至少4G
16~64G 至少8G
64~256G 至少16G服務器