Vultr VPS CentOS 7 添加 SWAP

昨天买了个 Vultr $2.5/月的配置,只有 Miami 可以选。第一个 IP,被干掉了。删掉重建,SSH 能正常连接,不过感觉速度比前阵子 NewYork 的 2.5 配置速度要慢。

安装完 LNMP 1.4 升级 PHP 7.2.3 失败;LNMP 1.5 beta 直接安装 PHP 7.2.3 也是失败。看安装日志,有下面的错误提示:

cc: internal compiler error: Killed (program cc1)
Please submit a full bug report,

Google 一下,有收获。应该是开启了 fileinfo,内存不足,被 Killed。

How to Fix PHP Configure “CC Internal error Killed (program cc1)” Error 提到有两个解决方法:1、增加内存;2、禁用“fileinfo”(./configure 加入 –disable-fileinfo)

方法二没试,方法一,加物理内存是要钱的,不掏钱只能增加虚拟内存——SWAP。

检查 SWAP 空间

swapon -s

返回信息概要是空,表示 Swap 文件不存在。检查才发现 Vultr 这个机子没有 SWAP。

free -m 

看到 SWAP 是 0.

检查文件系统

添加 SWAP 文件前,有必要检查一下文件系统,看是否有足够的硬盘空间来添加 SWAP。

df -hal

检查返回信息,剩余硬盘空间足够即可。

添加并启用 SWAP

使用 dd 命令来创建 SWAP 文件。(378M)

dd if=/dev/zero of=/var/swapfile bs=1024 count=378k

参数解读:

if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
bs=bytes:同时设置读入/输出的块大小为 bytes 个字节
count=blocks:仅拷贝 blocks 个块,块大小等于 bs 指定的字节数。

格式化并激活 SWAP

上面创建好 SWAP 文件需要格式化后才能使用。命令:mkswap /var/swapfile

激活 SWAP 命令:swapon /var/swapfile

再次运行命令:swapon -s

会有类似下面的返回信息

Filename Type Size Used Priority
/var/swapfile file 387068 0 -2

开机/重启自动挂载 SWAP

需要修改 fstab 配置,用 vi 打开 /etc/fstab 文件,在其最后添加如下一行:

/var/swapfile swap swap defaults 0 0

或者直接执行命令添加:echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

然后赋予 SWAP 文件适当的权限:

chown root:root /var/swapfile 
chmod 600 /var/swapfile

合理设置 swappiness

合理设置 Linux SWAP 空间的 swappiness ,可以降低对硬盘的缓存,有效利用物理内存。

Linux 会使用硬盘的一部分做为 SWAP 分区,用来进行进程调度——进程是正在运行的程序;把当前不用的进程调成“等待(standby)”,甚至“睡眠(sleep)”,一旦要用,再调成“活动(active)”,睡眠的进程就会在 SWAP 分区,把内存空出来让给“活动”的进程。

如果内存够大,应当告诉 Linux 不必太多使用 SWAP 分区,可以通过修改 swappiness 参数来设置。swappiness=0 表示最大限度使用物理内存,然后才使用 SWAP;swappiness=100 表示积极使用 SWAP,并且把内存上的数据及时搬运到 SWAP 空间。

命令:cat /proc/sys/vm/swappiness 可以查询系统当前 swappiness 值。我把它设置为 22,可以根据实际修改。

打开 vi /etc/sysctl.conf

文档最后加上一行:

# Search for the vm.swappiness setting. Uncomment and change it as necessary.
vm.swappiness=22

Esc,:wq,保存退出 vi,重启一下系统即可。

参考文章

DigitalOcean - How To Add Swap on CentOS 6

秋水逸冰 - DigitalOcean:如何在CentOS中添加Swap

yungke Li 'blog - 如何在 Vultr 中添加 SWAP 交換分區

小星星 - cc: internal compiler error: Killed解决办法


后记:添加 SWAP 后重新升级 PHP,顺利升级成功。

脚本一键添加 swap

提示:脚本不支持OpenVZ架构,安装会自动退出。

脚本作者:https://www.94ish.me/1820.html

运行命令:

wget https://cyhour.com/file/sh/swap.sh && bash swap.sh

然后根据选项进行操作,记得添加swap的时候填写纯数字,默认单位为 M。

代码 ▼展开

#!/usr/bin/env bash
#Blog:https://www.moerats.com/

Green="\033[32m"
Font="\033[0m"
Red="\033[31m"

#root权限
root_need(){
if [[ $EUID -ne 0 ]]; then
echo -e "${Red}Error:This script must be run as root!${Font}"
exit 1
fi
}

#检测ovz
ovz_no(){
if [[ -d "/proc/vz" ]]; then
echo -e "${Red}Your VPS is based on OpenVZ,not supported!${Font}"
exit 1
fi
}

add_swap(){
echo -e "${Green}请输入需要添加的swap,建议为内存的2倍!${Font}"
read -p "请输入swap数值:" swapsize

#检查是否存在swapfile
grep -q "swapfile" /etc/fstab

#如果不存在将为其创建swap
if [ $? -ne 0 ]; then
echo -e "${Green}swapfile未发现,正在为其创建swapfile${Font}"
fallocate -l ${swapsize}M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap defaults 0 0' >> /etc/fstab
echo -e "${Green}swap创建成功,并查看信息:${Font}"
cat /proc/swaps
cat /proc/meminfo | grep Swap
else
echo -e "${Red}swapfile已存在,swap设置失败,请先运行脚本删除swap后重新设置!${Font}"
fi
}

del_swap(){
#检查是否存在swapfile
grep -q "swapfile" /etc/fstab

#如果存在就将其移除
if [ $? -eq 0 ]; then
echo -e "${Green}swapfile已发现,正在将其移除...${Font}"
sed -i '/swapfile/d' /etc/fstab
echo "3" > /proc/sys/vm/drop_caches
swapoff -a
rm -f /swapfile
echo -e "${Green}swap已删除!${Font}"
else
echo -e "${Red}swapfile未发现,swap删除失败!${Font}"
fi
}

#开始菜单
main(){
root_need
ovz_no
clear
echo -e "———————————————————————————————————————"
echo -e "${Green}Linux VPS一键添加/删除swap脚本${Font}"
echo -e "${Green}1、添加swap${Font}"
echo -e "${Green}2、删除swap${Font}"
echo -e "———————————————————————————————————————"
read -p "请输入数字 [1-2]:" num
case "$num" in
1)
add_swap
;;
2)
del_swap
;;
*)
clear
echo -e "${Green}请输入正确数字 [1-2]${Font}"
sleep 2s
main
;;
esac
}
main

声明:除非注明,常阳时光文章均为原创
本文地址:https://cyhour.com/662/
转载时必须以链接形式注明原始出处。
Views: 3.4K Tags:  ,  ,  ,  , 

Comments:9

  1. 有入手一枚 是做备用?

    2018.03.19 02:29 # 回复
    1楼
  2. 我有一台 NJ的,不过已经删除了,ping太高了。= =、虽然加上BBR之后好多了,但是还是算了。= =、

    2018.03.19 19:26 # 回复
    2楼
    • @姜辰 嗯,NY 2.5 又有货了,ping 值比迈阿密的要低那么一点,速度也快点。

      2018.03.19 22:48 # 回复
  3. 说起来我的vultr该续费了。。

    2018.03.19 22:26 # 回复
    3楼
  4. 添加 SWAP 效果明显吗?

    2018.03.24 10:16 # 回复
    4楼

发表留言

炒蛋:Vultr 送$25 | 搬瓦工年付$19补货,优惠码 BWH26FXH3HIQ | 推荐VPS信息