mysql8.0 查询的时候自动退出,被杀死进程。

2020-03-05 发表在 服务器 127

网上的方法千篇一律,在看到这篇文章,希望你有耐心的看完,可以帮助你解决问题。

原因

服务器内存过小,而mysql占用过多,导致被linux内核杀死。 首先通过free命令来查看内存,应该剩余不多。

free -m

解决办法

解决办法分为2个步骤,缺一不可。

    1. 调整缓冲区占用大小

这个值默认是128M,可以改成64M,32M等。

innodb_buffer_pool_size=32M
    1. 调整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,大家可以根据自己的需要来调整大小。

注: 本文部分引用了:https://eliyar.biz/cannot-allocate-memory-for-the-buffer-pool/

作者:贝塔博客
本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。
评论
登录以后才可以发布评论哦, 点击登录 发布评论
评论列表 0人参与,0条评论
暂时还没有人评论,快来一条神回复吧!