一、原因分析
最近索性自己用阿里雲服務器搭建了一個 gitlab 服務器以供自己開發使用,服務器搭建很簡單,但是使用起來是相當的卡頓,在代碼 pull,push 過程中都會有相應的延遲,很糟心。起初我以為是我的阿里雲服務器配置過低造成的(1核,2G,centos7),后來發現不是這樣。
gitlab 啟動運行就占用了大量的內存,2G內存在啟動后已經所剩無幾。想再進行 git 相關操作自然也就會出現卡頓現象。
正常 centos 應該是啟用 swap 分區的,但是阿里雲,騰訊雲的服務器卻沒有swap分區!
通過以下命令查看swap分區情況:
cat /proc/swaps
- 1
結果如下圖所示,可以看到並沒有swap分區:
二、解決方法
1、創建 swap 分區(這里需要等待幾秒)
dd if=/dev/zero of=/data/swap bs=512 count=8388616
- 1
注意:創建swap大小為bs*count=4294971392(4G),/data/swap目錄若無則找/mnt/swap
2、通過mkswap命令將上面新建出的文件做成swap分區
mkswap /data/swap
- 1
3、查看內核參數vm.swappiness中的數值是否為0,如果為0則根據實際需要調整成60
查看參數:
cat /proc/sys/vm/swappiness
- 1
設置參數:
sysctl -w vm.swappiness=60
- 1
4、啟用 swap 分區
-
swapon /data/swap
-
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
- 1
5、再次使用cat /proc/swaps 查看swap分區是否啟動
可以看到,swap分區已經啟用,現在通過 gitlab 進行操作會發現很流暢!
#可能出現的問題
當時可能gitlab運行沒問題,后續的時候發現swap分區並未執行,
可以試一下永久修改,則編輯/etc/sysctl.conf文件
將vm.swappiness改為30或者60 (可嘗試)