http://300second.blog.51cto.com/7582/1131191
年前一客戶來電,說他們信息中心機房一臺Linux服務器運行緩慢,系統服務出現間歇性停止響應,讓過去幫忙處理一下這一問題。
到達現場之後,發現此服務器的物理內存是16G,而最初裝機的時候,系統管理人員卻只分配了2G的虛擬內存。查看內存的使用狀況,物理內存並沒有完全耗盡,但虛擬內存已經耗盡,整個系統CPU負載和磁盤IO都非常高。
知道了問題所在是由於交換分區不足導致,那麼解決方法就是:將虛擬內存通過虛擬文件的方式增加到8G,系統運行狀況明顯好轉。
其實虛擬內存並不是等到物理內存用盡了才使用的,是否儘量的使用或不使用swap,在內核空間有一個參數控制。
[root@server ~]# cat /proc/sys/vm/swappiness 60 |
swappiness=0 的時候表示最大限度使用物理內存,然後纔是swap空間;swappiness=100 的時候表示積極的使用swap分區,並且把內存上的數據及時的搬運到swap空間裏面。
對於現在動輒幾十GB、上百GB物理內存的服務器來說,究竟爲其Linux系統設置多大的交換分區合適呢?爲此,我引用紅帽官方文庫裏的一段文字進行淺析說明。