解决 mariadb 在低配 VPS 上启动崩溃的问题

引言

最近博客又抽风了,打开主页后提示 Error Establishing a Database Connection。仔细想想,应该就是数据库服务器 mariadb 挂了;以前也遇到过类似的问题。经过分析日志,并结合网上的资料最终解决了问题。

日志

以下是 mariadb 服务器挂掉时的比较关键的日志信息,从下面的日志信息中,我们可以很容易地看出由于内存不足,从而导致数据库服务器启动时崩溃。

 

解决

  • 在使用 free -m 查看内存信息时,发现 swap 分区大小为 0。难怪说数据库服务器无法启动呢,在内存不够用的情况下,又无法使用 swap 分区,自然崩溃了。由于 VPS 使用了 SSD,性能自然不错。下面我们给服务器系统 CentOS 7 添加 1024M 的 swap 分区,采用的方法是创建一个 swap 文件:
    • 使用下面的命令创建 swapfile
    • 使用下面的命令配置 swap 文件:
    • 接下来,使用下面的命令立即启用 swapfile,这样就不用等到下次重启时自动启用:
    • 最后,我们在 /etc/fstab 中添加下面一行,这样可以在系统下次重启时自动生效创建的 swapfile
    • 使用 cat /proc/swapsfree -m 查看 swapfile 的生效情况,如下图所示:
  • 在完成上面的步骤后,我们还可以在 /etc/my.cnf 配置文件中添加一些配置信息,降低 mariadb 资源需求,具体的配置请参考文末给出的链接。

启动

  • 启动 apache 服务器:systemctl start httpd.service
  • 启动 mariadb 服务器:systemctl start mariadb.service

启动完成后,再次打开网站主页,bingo,问题解决了!

总结

  • 低配 VPS 最好还是要多增加 swap 分区大小,尤其对于使用 SSD 的 VPS 而言,swap 分区的性能也非常不错;
  • 数据库服务器崩溃后,一定要记得学会分析日志。最简单的做法就是使用 tail 命令看看最近的崩溃日志,并根据崩溃信息寻找解决问题的办法;
  • WordPress 程序本身比较占资源,所以运行在低配的 VPS 时,还是需要做些优化工作。具体请参考文末给出的链接。

参考

版权声明

  1. 本文由 Christopher L 发表,采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。请确保你已了解许可协议,并在 转载 时声明。
  2. 本文固定链接:http://blog.chriscabin.com/others/wordpress/1502.html