linux 使用文件增長虛擬內存 swap

以前買了個雲服務器玩,不過是最低配置的1核1G,後來發現這個內存過小了,隨便裝幾個軟件就不行了,內存消耗較大的像 redis 運行起來不少問題。mysql

這些時間瞭解了下 docker 容器,去嘗試了下發現 mysql 就掛了,並且怎麼樣也啓動不了了,後來發現是內存實在是不夠了linux

後來網上了解,若是服務器的老是報告內存不足,而且時常由於內存不足而引起服務被強制kill的話,在不增長物理內存的狀況下,啓用swap交換區做爲虛擬內存是一個不錯的選擇。固然這個選擇是在你對訪問速度和緩存那些沒什麼要求的狀況下,好比你本身測試玩的redis

虛擬內存通常設置爲物理內存的2倍便可sql

新增swap分區

這裏使用文件做爲swap分區 ,下面操做須要在root用戶下操做docker

使用 free -h 查看當前內存佔用狀況,能夠看到物理內存所剩無幾,下面的swap也是使用的文件做爲虛擬內存使用的vim

img

建立要做爲swap分區的文件:增長1GB大小的交換分區,則命令寫法以下,其中的count等於想要的塊的數量(bs*count=文件大小),以下面是2G緩存

# dd if=/dev/zero of=/root/swapfile2 bs=1M count=2048服務器

  img

  這裏我使用的of爲/root/swapfile2 ,能夠看到該文件是新建立的,這時候這個文件還不能直接使用爲swap文件app

修改文件權限,如不修改,在啓用swap文件的時候會提示下面信息(不影響使用,建議修改)測試

# chmod 0600 /root/swapfile2

  img

格式化爲交換分區文件,創建swap的文件系統,/root/swapfile2須要與上面的of的值一致,這個目錄能夠自定義

# mkswap /root/swapfile2

  img

  

啓用swap文件:

# swapon /root/swapfile2

  img

能夠看到未啓用時虛擬內存爲2G,啓用後內存增長了2G

使系統開機時自啓用

# vim /etc/fstab

  img

在文件/etc/fstab中添加一行

/root/swapfile2 swap swap defaults 0 0

調整swap空間使用的優先級

  若是內存夠大,應當告訴 linux 沒必要太多的使用 SWAP 分區, 能夠經過修改 swappiness 的數值。

  swappiness=0 的時候表示最大限度使用物理內存,而後纔是 swap空間,swappiness=100的時候表示積極的使用swap分區,而且把內存上的數據及時的搬運到swap空間裏面。

  各個操做系統的優先級可能都不同,若是不調整,你會發現添加的虛擬內存幾乎沒有用到

  查看當前swappiness值

  # cat /proc/sys/vm/swappiness

  

  修改swappiness值爲60(臨時修改,重啓後即還原爲默認值)

  # sudo sysctl vm.swappiness=60

  img

  

  永久修改swappiness默認值(重啓生效)

  # vim /etc/sysctl.conf

  找到vm.swappiness ,若是沒有則須要手動添加一行 vm.swappiness = 60 保存便可

  img   

相關文章
相關標籤/搜索