宝塔的数据库经常性自动停止,是因为网站频繁的请求数据库,而服务器内存又不足,为了保证服务器不彻底卡死,保护性的自动停止数据库,特别是有些程序比如wordpress的数据库查询次数尤为突出,wordpress默认是自动升级的,加上wordpress插件之多,就算你不进行任何操作,你的后台也是在频繁的请求数据库!
就更不要提通过一些插件备份网站,做大量的文章更新,以及采集等,如果服务器配置很低,甚至采集一篇文章十几张图片就能瞬间让你的内存跑满导致服务器彻底卡死!当然导致这种问题除了服务器配置不够还跟你设置不当所导致有关,比如MySQL、php等性能设置!当然今天讨论的主题并不是这。
虽然wordpress可以通过缓存减轻数据库负担,但是当你管理后台更新文章或其他操作还是会不可避免的请求数据库,特别是wordpress这种越来越臃肿的程序,且避免不了一些人恶意的请求以及垃圾蜘蛛的恶意爬取,导致数据库保护性暂停。
当然这里是推荐你更换更高配置的服务器,如果你不打算更换可以考虑一下方法解决宝塔面板数据库自动停止的问题!
之前找到的一个宝塔重启数据库的shell脚本,就是下面这个脚本,但是我发现这个脚本误导了很多人,这个脚本只能定时自动重启在运行中的数据库。缓减数据库的压力,如果数据库已经停止,还是只能手动执行才行,无法自动将已停止的数据库重启!
pgrep -x mysqld &> /dev/nullif [ $? -ne 0 ];then bash /www/server/panel/script/rememory.sh /etc/init.d/mysqld startfi
想要自动检测数据库是否停止,如果检测到数据库停止,自动重启!下面这段脚本才是正确的!
#!/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版本设置是否得当,经常看看日志是否有恶意请求!