2020-03-05
发表在 服务器
1048
网上的方法千篇一律,在看到这篇文章,希望你有耐心的看完,可以帮助你解决问题。
原因
服务器内存过小,而mysql占用过多,导致被linux内核杀死。
首先通过free命令来查看内存,应该剩余不多。
free -m
解决办法
解决办法分为2个步骤,缺一不可。
调整缓冲区占用大小
这个值默认是128M,可以改成64M,32M等。
innodb_buffer_pool_size=32M
调整linux Swap/虚拟内存大小
这里推荐是512Mb,可以根据实际情况来调整,count的值就是缓冲区的大小
在/mnt/创建一个512M的512Mb.swap文件
sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512
注:bs = block size 区块大小; count = 区块个数;
格式化文件,使之成为swap(交换设备)
sudo mkswap /mnt/512Mb.swap
更改权限为0600,不然会报错
chmod 0600 /mnt/512Mb.swap
将swap加入到现有系统中
sudo swapon /mnt/512Mb.swap
编辑 /etc/fstab 文件
vim /etc/fstab
在文件末尾增加一句
/mnt/512Mb.swap none swap sw 0 0
做永久性变更
sudo nano /etc/fstab
保存退出。这样重启后Swap分区也依然有效。
添加后我们可以通过free命令查看内存和缓冲区的大小
free -m
输出:
total used free shared buff/cache available
Mem: 3932 3404 317 22 210 268
Swap: 5120 1373 3747
我配置了2个缓冲区,总共5120M,大家可以根据自己的需要来调整大小。