前言

新换了服务器,装的 aapanel 面板,安装完各种环境没多久,就出现了可升级的提示,自然是点一遍 updateNginxRedis 等都正常升级完了,可唯独 MySQL 一直没升级成功。

一直没功夫也就没在意,也就是多点一遍 update 就算了,空下来去看日志,发现每次 MySQLcmake 到64%左右就失败了。

失败现象

在下载解压完资源后,会进入 make 编译阶段,每次都大约在64%的时候报如下错误:

1
2
C++: fatal error: Killed signal terminated program cc1plus
compilation terminated.

然后编译就终止了,没有更多错误信息。

解决

网上说是机器内存不足,测试过增加虚拟内存后顺利编译完成。服务器是2G内存的小鸡鸡,那应该是真的内存不足导致,以下增加虚拟内存的方法自选其一即可完成。

aapanel 通过 Linux Tools 增加虚拟内存

如果装的 aapanel 或者宝塔,直接在应用商店安装 Linux Tools启动后》Swap/virtual memory》填需要增加虚拟内存大小 即可,一般系统会自带虚拟内存,我们可以将总虚拟内存增加到物理内存的2倍。

如果回头想删除增加的虚拟内容,那么在刚增加虚拟内存的地方,将增加虚拟内存大小填 0 后点确认提交即可恢复。

通过命令管理虚拟内存

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建分区路径
mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
mkswap /var/cache/swap/swap0
# 激活SWAP文件
swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
swapon -s

以上命令使用 root 用户执行,如果非 root 用户登录请自行添加 sudoswap0 文件的路径在 /var/cache/swap/ 下,编译完后, 如果不想要交换分区了, 可以删除。

删除交换分区的命令:

1
2
swapoff /var/cache/swap/swap0
rm /var/cache/swap/swap0

释放空间命令:

1
2
3
swapoff -a
#详细的用法:swapoff --help
free -m #查看当前内存使用情况