Với những server không có swap, khi hết RAM hệ thống thường tự động stop service MySQL, do đó hay xuất hiện thông báo lỗi Establishing a Database Connection.
Do sử dụng ổ cứng có tốc độ chậm hơn RAM, nhất là với những server dùng ổ cứng thường không dùng SSD, do đó không nên thường xuyên sử dụng Swap sẽ làm giảm hiệu năng hệ thống. Nếu tình trạng hết RAM hay xảy ra, bạn hãy tối ưu server, tăng cache và nâng cấp bổ sung thêm RAM.
Với các VPS dùng công nghệ ảo hóa OpenVZ, có thể bạn sẽ không tạo được swap do hệ thống đã tự động kích hoạt sẵn.
Hướng dẫn tạo Swap
Áp dụng cho cả CentOS và Ubuntu
Kiểm tra hệ thống đã kích hoạt swap hay chưa
Trước khi tiến hành tạo file swap cần kiểm tra xem hiện tại hệ thống đã kích hoạt swap hay chưa bằng lệnh:
Bash:
swapon -s
Kiểm tra dung lượng trống của ổ cứng
Để kiểm tra dung lượng trống còn lại của ổ cứng, dùng lệnh
df -h
, như trong hình dung lượng trống còn lại là 13GB, vẫn thoải mái để tạo swap.Tiến hành tạo swap
- Để tạo swap các bạn sử dụng lệnh sau:
Bash:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
count=1024k
bằng count=2048k
để tạo swap dung lượng 2Gb. Dung lượng Swap tối đa chỉ nên gấp đôi RAM vật lý.- Tiếp theo ta tạo phần vùng swap sử dụng lệnh:
Bash:
mkswap /swapfile
- Kích hoạt swap:
Bash:
swapon /swapfile
warning insecure permissions 0644
, không sao cả bạn cứ bỏ qua. Chúng ta sẽ chỉnh lại ở bước sau.- Kiểm tra lại tình trạng swap bằng lệnh phía dưới bạn sẽ thấy như sau:
Bash:
swapon -s
- Thiết lập swap tự động được kích hoạt mỗi khi reboot sử dụng lệnh sau:
Bash:
echo /swapfile none swap defaults 0 0 >> /etc/fstab
Bash:
chown root:root /swapfile
chmod 0600 /swapfile
Cấu hình Swappiness
Swappiness là mức độ ưu tiên sử dụng swap, khi lượng RAM còn lại bằng giá trị của swappiness (tính theo tỷ lệ phần trăm) thì swap sẽ được sử dụng. Swappiness có giá trị trong khoảng 0 – 100.
- swappiness = 0: swap chỉ được dùng khi RAM được sử dụng hết.
- swappiness = 10: swap được sử dụng khi RAM còn 10%.
- swappiness = 60: swap được sử dụng khi RAM còn 60%.
- swappiness = 100: swap được ưu tiên như là RAM.
0
để tận dụng tối đa sức mạnh hệ thống. Tốt nhất nên chỉnh về 10
.- Kiểm tra mức độ sử dụng file swap của hệ thống bằng cách chạy dòng lệnh sau
Bash:
cat /proc/sys/vm/swappiness
Bash:
sysctl vm.swappiness=10
Để đảm bảo giữ nguyên thông số này mỗi khi khởi động lại VPS bạn cần thêm thông số
vm.swappiness
vào cuối file /etc/sysctl.conf
, để chỉnh sửa file /etc/sysctl.conf
các bạn có thể dùng công cụ nano
hoặc vim
, ở đây mình sử dụng nano các bạn dùng lệnh sau:
Bash:
nano /etc/sysctl.conf
Ctrl + O
để lưu, Enter
và Ctrl + X
để thoát:
Bash:
vm.swappiness = 10
- Khởi động lại VPS và kiểm tra lại kết quả bằng lệnh:
Bash:
swapon -s
cat /proc/sys/vm/swappiness
Lưu ý đối với CentOS 7.2
- Với CentOS 7.2 có thể tune profile sẽ overwrite vm.swappiness mỗi lần reboot, bạn cần kiểm tra profile nào đang overwrite để cấu hình lại thủ công bằng lệnh.
Bash:
grep vm.swappiness /usr/lib/tuned/*/tuned.conf
Bash:
[[email protected] ~]# grep vm.swappiness /usr/lib/tuned/*/tuned.conf
/usr/lib/tuned/latency-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/throughput-performance/tuned.conf:vm.swappiness=10
/usr/lib/tuned/virtual-guest/tuned.conf:vm.swappiness = 30
/usr/lib/tuned/virtual-guest/tuned.conf
, tìm vm.swappiness
và thay đổi vm.swappiness = 30
thành vm.swappiness = 10
các bạn có thể sử dụng lệnh sau:
Bash:
nano /usr/lib/tuned/virtual-guest/tuned.conf
Ctrl + O
để lưu, Enter
và Ctrl + X
để thoát.Khởi động lại VPS và kiểm tra lại kết quả.
Thay đổi dung lượng swap
Nếu bạn đã theo các hướng dẫn trên để tạo swap file và muốn thay đổi dung lượng swap, hãy thực hiện ngược lại quá trình.
- Tắt swap:
Bash:
swapoff /swapfile
Bash:
rm -f /swapfile
Bash:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k
Bash:
mkswap /swapfile
Bash:
swapon /swapfile
Bash:
chown root:root /swapfile
chmod 0600 /swapfile
Bash:
swapon -s
Giờ khởi động lại server rồi kiểm tra lại kết quả thôi.