宝塔的数据库经常性自动停止,是因为网站频繁的请求数据库,而服务器内存又不足,为了保证服务器不彻底卡死,保护性的自动停止数据库,特别是有些程序比如ZBlog的数据库查询次数尤为突出,加上ZBlog插件之多,就算你不进行任何操作,你的后台也是在频繁的请求数据库!
就更不要提通过一些插件备份网站,做大量的文章更新,以及采集等,如果服务器配置很低,甚至采集一篇文章十几张图片就能瞬间让你的内存跑满导致服务器彻底卡死!当然导致这种问题除了服务器配置不够还跟你设置不当所导致有关,比如MySQL、php等性能设置!当然今天讨论的主题并不是这。
虽然ZBlog可以通过缓存减轻数据库负担,但是当你管理后台更新文章或其他操作还是会不可避免的请求数据库,特别是ZBlog这种越来越臃肿的程序,且避免不了一些人恶意的请求以及垃圾蜘蛛的恶意爬取,导致数据库保护性暂停。
当然这里是推荐你更换更高配置的服务器,如果你不打算更换可以考虑一下方法解决宝塔面板数据库自动停止的问题!
出现数据库经常停止可以参照下面解决方案:
解决方法一:
安装宝塔面板【linux工具箱】
添加设置SWAP大小,根据你的实际内存进行调整,swap是Linux下的虚拟内存,设置适当的swap可增加服务器稳定性,建议swap容量在真实内存容量的1.5倍左右,若您的服务器内存大于4GB,可设1-2GB的固定值,swap文件默认保存在/www/swap,设置前请确保磁盘空间够用。
在这里注意 :OVZ虚拟架构机器不可用此功能
解决方法二:
根据你的实际内存进行mysql优化
解决方法三:
上个文章讲,但是不科学,无缘无故就去启动数据库 应该先添加一个检测 确定数据库停止 在去启动
宝塔版面内存太小,机器经常数据库自己停止,添加一个自动数据库任务再试试?
登陆宝塔后台-计划任务-添加Mysql守护,执行周期,可选择多长时间执行一次,比如10分钟监控执行一次,具体的周期请站长根据自己服务器实际情况来设置。
但是我发现这个脚本误导了很多人,这个脚本只能定时自动重启在运行中的数据库。缓减数据库的压力,如果数据库已经停止,还是只能手动执行才行,无法自动将已停止的数据库重启!
代码语言:javascript复制pgrep -x mysqld &> /dev/nullif [ $? -ne 0 ];thenbash /www/server/panel/script/rememory.sh/etc/init.d/mysqld startfi
想要自动检测数据库是否停止,如果检测到数据库停止,自动重启!下面这段脚本才是正确的!
代码语言:javascript复制#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH pgrep -x mysqld /dev/null if [ $? -ne 0 ] echo At time:$(date) :MySQL is stop . /var/log/mysql_messages service mysqld start fi
执行周期我设置的1分钟检测一次,也就当你数据库停止后,1分钟会重启,网站可以正常访问了!个人觉得这个脚本的执行周期可以设置短一点。
两个计划脚本建议分别都添加上,但是要注意的一点,本文中的第一个脚本执行周期时间不建议设置的过小,10分钟即可,如果第一个脚本时间设置过短,当你才后台更新文章或者升级网站程序时可能会造成错误!
解决方法四:
这个方法简单粗暴,适合土豪站长,直接增加服务器内存或使用云数据库,把数据库分离出去。
导致数据库自动暂停是多方面的,这篇文的方法并没有从根本上解决这个问题,而是尽量减少数据库导致网站长时间无法正常,如果你的数据库一个星期只是3-4次自定停止,通过这个可以有效解决,对seo优化和用户体验也不会有太大影响!
如果经常性的一天数据库就停止好几次,那么就是宝塔设置有问题了,请检查你的宝塔设置是否有安全问题,以及数据库配置和php版本设置是否得当,经常看看日志是否有恶意请求!