339次浏览

centos7 MySQL数据库经常意外停止解决记录

本站点的mysql时常会停止运行搞得访问文章会返回500服务器错误并且提示无法连接数据库, 重要的是还会影响百度蜘蛛抓取,之前遇到这种情况一般我都是重启下数据库或者主机就可以解决了但这并不是长久之计,现在决定根除此问题。

问题原因

查询了下MySQL错误日志以及服务器内存使用情况最终确定是由于服务器内存只有2GB,当访问网站的人一多就会出现内存不够用的情况,内存一但耗尽MySQL服务就会异常退出。

解决方案

  1. 使用swap虚拟内存分区(swap分区的功能是应付物理内存不足的情况下所造成的内存扩展记录。)
  2. 增大服务器内存

这两种方法我选择了前者,废话不多说直接开干,首先ssh登录服务器执行下面步骤

//使用dd命令创建一个swap交换文件,这样就建立一个/home/swap的分区文件,大小为2G。
dd if=/dev/zero of=/home/swap bs=1M count=2048

//制作为swap格式文件
mkswap /home/swap

//再用swapon命令把这个文件分区挂载swap分区
swapon /home/swap

//使Swap在主机重启后依然生效
nano /etc/fstab
加入以下内容
/home/swap swap swap defaults 0 0

//swap虚拟内存分区创建完毕后再编辑mysql的配置文件加入

//降低数据库 InnoDB 引擎的缓冲区大小,以及限制 MySQL 的最大连接数(max_connections):
降低 InnoDB 缓冲区大小为 64M 或者 32M(到mysql配置文件中修改)
innodb_buffer_pool_size=64M

//限制最大连接数为100,在服务器配置很低时可以继续降低
max_connections=100

以上操作完成后重启主机即可!

重启后可以执行 free -m 查看内存情况,如下图可以看到swap虚拟内存已经成功挂载好了并且有一部分正在使用

这样一来mysql服务应该就不会因为内存原因出现意外停止了,虚拟2GB应该够用反正网站浏览量不大。

发表评论

电子邮件地址不会被公开。 必填项已用*标注