数据库内存不足

现在使用的 Centos7.2 系统,数据库版本是 Mariadb5.5.52.
很多次打开网站时提示数据库链接错误,于是进入命令行中查找数据库日志文件查找原因:

发现了是内存不足导致数据库自动关闭.
运行下列语句查看服务器内存使用情况:

#[root@VM_247_254_centos ~]free -m

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.
于是在服务器内存不足的情况下,不能使用swap分区,导致了数据库意外关闭.

现在来创建一个1024MB的Swap分区

1. 创建swapfile

[root@VM_247_254_centos ~]# dd if=/dev/zero of=/swapfile bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 20.8217 s, 51.6 MB/s

在分配过程中会明显感觉卡住,等待一会就能够分配成功

2.使用下面的命令配置 swap 文件:

[root@VM_247_254_centos ~]# mkswap /swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=2c52576d-5773-4e5a-9e7e-76754c0155da

3.接下来,使用下面的命令立即启用 swapfile

[root@VM_247_254_centos ~]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.

4.最后,我们在 /etc/fstab 中添加下面一行,这样可以在系统下次重启时自动生效创建的 swapfile

[root@VM_247_254_centos ~]# vi /etc/fstab

使用vi进入到/etc/stab文件,然后通过i命令在文件最后插入下面这句

/swapfile swap swap defaults 0 0

最后该文件应该是这样的

5.使用 cat /proc/swaps或 free -m 查看 swapfile 的生效情况

6.重启httpd服务和mariadb服务

[root@VM_247_254_centos ~]# systemctl restart httpd.service
[root@VM_247_254_centos ~]# systemctl restart mariadb.service

在这时应该能够解决数据库内存不足的问题了.

参考链接:
mariadb 在低配 VPS 上崩溃问题