环境
- 阿里云1核512M CentOS 7
现象
- 编译包含
gopkg.in/mgo.v2
库时出现了gcc internal compiler error: Killed
报错
原因
- 这是内存不足,且没有交换区,go中用到gcc编译过程中内存耗尽, 导致了编译中断。
解决办法
一、硬件解决
提升配置,增加内存。
二、释放内存
结束没用的进程,释放cache缓存
#!/bin/bash
echo "Clean Cache Begin..."
#写入硬盘,防止数据丢失
sync;sync;sync
#延迟10秒,等待磁盘写入
sleep 10
# 开始清理
echo 1 > /proc/sys/vm/drop_caches
echo "Clean Finish !"
三、设置虚拟内存
1. 创建分区文件
dd if=/dev/zero of=/swapfile bs=1k count=2048000 #2G
2. 生成swap文件系统
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
4. 修改配置
编辑/etc/fstab
文件,在后面添加以下内容。不然系统重启后swap文件不会被激活
/swapfile swap swap defaults 0 0