mariadb服务经常会出现错误:Cannot allocate memory for the buffer pool。这种错误出现的主要原因是内存空间不足。从根本上解决的方法是使用更大的内存和扩大swap空间。此外,还应该定时重启服务器。之后将很少会出现之前的错误,但是并不能完全避免。因为有时会出现迸发的大量访问,为了峰值使用过大的内存或过于频繁地重启都是不现实的。这时就可以用到另一个选项就是 配置mariadb服务自动重启 ,而不是一直处于停止状态。
1 配置方法
首先需要让mariadb服务开机自启动,这个一般都配置过了,不然每次重启都要手动启动服务。
systemctl enable mariadb
然后编辑mariadb的服务文件 /etc/systemd/system/multi-user.target.wants/mariadb.service 在其中[Service] 节中添加
Restart=always
RestartSec=10
StartLimitInterval=0
Restart是控制在什么情况下自动重启,always意为任何情况下出现错误后都会重启。RestartSec为重启间隔。StartLimitInterval是重启次数限制,0为无限制。最后重新加载配置
systemctl daemon-reload
2 验证方法
首先查看当前服务的进程id
systemctl status mariadb
然后使用kill命令杀死当前进程,再使用上面的命令查看状态。如果很快的话会看到服务正在启动中。之后就会看到服务启动完成,并获得了一个新的进程id。