本文最后更新于 3029 天前,其中的信息可能已经有所发展或是发生改变。
前言
很多 WordPress 博主肯定经常会遇到 Error Establishing a Database Connection
,Discuz 用户也一定会经常遇到 Can not connect to MySQL server
之类的问题,一般来说这是因为数据库挂掉了,原因有很多种,大家主要还得看日志,这里我们主要分析因为内存太小导致的数据库挂掉的问题。
版本选择
内存 ≤ 1.5 G 内存的建议选择 Mysql、Mariadb、Percona 5.5 版本
内存 比较大的,可以选择 Mysql、Percona 5.6、5.7 和 MariaDB 10.0 10.1 10.2
修改配置
首先,修改 /etc/my.cnf
文件(如果没有的话,就需要翻文档找自己环境的数据库配置文件在哪里了),
将 innodb_buffer_pool_size
适当调小并重启数据库。 其他还有很多参数可以调小,不过如果不了解相关参数,随意修改可能导致数据库启动失败。
添加虚拟内存
dd if=/dev/zero of=/swapfile count=1024 bs=1M
mkswap /swapfile
swapon /swapfile
chmod 600 /swapfile
[ -z "`grep swapfile /etc/fstab`" ] && echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
}
在 SSH 中输入上述代码,就会创建 1G 的 SWAP 内存了,类似于 Windows 的虚拟内存,当物理内存不够用的情况话,使用磁盘做内存用。
SWAP 一般用于突发情况以防万一用,如果平常的时候依旧过分依赖虚拟内存,实际上是影响网站速度的。 OpenVZ 架构的系统无法自行添加虚拟内存。
对象缓存
如果内存足够的用户,可以考虑是否是因为数据库的连接数过高了。像 WordPress 和 Discuz 则可以利用对象缓存利用 NoSQL 软件来缓存页面,减少数据库的连接数。
从来就没有“旧版本适合小内存”一说,新版本完全可以通过配置来对小内存的机器完成优化
问题是用小内存的人数据库宕掉,一般都是因为不会写 my.cnf
那就应该让他去学会写my.cnf啊,哪里有用旧版本的道理?
更何况新版的mariadb安装之后的默认配置模板就有4个,对应特大大中小内存四种情况。
那时候随手乱写的,嗯,下次考虑写my.cnf