宝塔的数据库经常性自动停止,是因为网站频繁的请求数据库,而服务器内存又不足,为了保证服务器不彻底卡死,保护性的自动停止数据库,特别是有些程序比如wordpress的数据库查询次数尤为突出,wordpress默认是自动升级的,加上wordpress插件之多,就算你不进行任何操作,你的后台也是在频繁的请求数据库!
引起宝塔面板数据库自动停止的原因
就更不要提通过一些插件备份网站,做大量的文章更新,以及采集等,如果服务器配置很低,甚至采集一篇文章十几张图片就能瞬间让你的内存跑满导致服务器彻底卡死!当然导致这种问题除了服务器配置不够还跟你设置不当所导致有关,比如MySQL、php等性能设置!当然今天讨论的主题并不是这。
虽然wordpress可以通过缓存减轻数据库负担,但是当你管理后台更新文章或其他操作还是会不可避免的请求数据库,特别是wordpress这种越来越臃肿的程序,且避免不了一些人恶意的请求以及垃圾蜘蛛的恶意爬取,导致数据库保护性暂停。
说到底引起这种问题的根本原因,还是服务器性能不足导致的,本次介绍的这种方法也是治标不治本的。
当然这里是推荐你更换更高配置的服务器,如果你不打算更换可以考虑一下方法解决宝塔面板数据库自动停止的问题!
解决宝塔面板数据库自动停止的问题
之前找到的一个宝塔重启数据库的shell脚本,就是下面这个脚本,但是我发现这个脚本误导了很多人,这个脚本只能定时自动重启在运行中的数据库。缓减数据库的压力,如果数据库已经停止,还是只能手动执行才行,无法自动将已停止的数据库重启!
pgrep -x mysqld &> /dev/null if [ $? -ne 0 ];then bash /www/server/panel/script/rememory.sh /etc/init.d/mysqld start fi
想要自动检测数据库是否停止,如果检测到数据库停止,自动重启!下面这段脚本才是正确的!
#!/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
好了,简单记录一下设置方法!
进入宝塔面板-找到任务计划-新建一个任务计划,设置如下图
执行周期我设置的0.5分钟检测一次,也就当你数据库停止后,0.5分钟会重启,网站可以正常访问了!个人觉得这个脚本的执行周期可以设置短一点。
本文中的两个计划脚本建议分别都添加上,但是要注意的一点,本文中的第一个脚本执行周期时间不建议设置的过小,10分钟即可,如果第一个脚本时间设置过短,当你才后台更新文章或者升级网站程序时可能会造成错误!
导致数据库自动暂停是多方面的,这篇文的方法并没有从根本上解决这个问题,而是尽量减少数据库导致网站长时间无法正常,如果你的数据库一个星期只是3-4次自定停止,通过这个可以有效解决,对seo优化和用户体验也不会有太大影响!
如果经常性的一天数据库就停止好几次,那么就是宝塔设置有问题了,请检查你的宝塔设置是否有安全问题,以及数据库配置和php版本设置是否得当,经常看看日志是否有恶意请求!
官方QQ群号码:922069959(空)、1093596563(空)
One thought on “宝塔面板数据库自动停止解决办法,宝塔面板MySQL数据库自动重启shell脚本”
Pingback: 宝塔面板FTP服务端报错,提示“服务器发回了不可路由的地址。使用服务器地址代替。” – 月下博客
留言评论