Error establishing a database connection 终极解决方案

工具

最近出现了不少类似的问题,很苦恼,查了下也没有对应的解决方案,网络上说啥的都有。

出现此类问题的原因较多,主要是有两个。根目录下wp-config.php的数据库用户名密码错误,这一类问题不会忽然出现,往往在迁移等才出现,这一类原因重启也不好用。另一个原因是内存不够,这一类会隔一段时间出现,重启可以解决。思路如下:

  1. 尽量减少服务器压力:比如缓存(wp super cache, fastest cache和wp rocket)和CDN;可以保证即使断掉数据库也可以正常访问;
  2. 安装PHP缓存扩展,尽量使用更高的PHP版本,另外缓存安装建议如下:脚本缓存:xcache、opcache 任选一项安装,PHP5.2-5.4建议使用xcache,PHP5.5以上建议使用opcache内容缓存:若程序支持,建议优先顺序如下: redis > apc > memcached > memcache 注意:内容缓存和脚本缓存,都各只安装一个,不要安装多个!
  3. 给服务器增加内存(土豪推荐),或者VPS可以添加虚拟内存Swap(一般是实际内存的1.5倍)
  4. 第三个思路是定时清理,比如定时重启reboot,每天半夜清理缓存;定时10分钟重启mysql数据库;如遇到mysql数据库停止则启动30秒;

 

参考文章:

https://baijiahao.baidu.com/s?id=1652595166406498268&wfr=spider&for=pc

https://www.hinwen1.com/28872.html

https://www.hinwen1.com/28816.html

另外:
按理说,512M内存的VPS跑Centos,装个宝塔面板不会有问题的,网友的512M VPS安装宝塔面板后仅跑了一个WordPress新站就因内存不足而MySQL频繁崩溃。记得曾经512M内存用军哥的LAMP包跑好几个小流量站一点压力也没有,看来还是越纯净的越好。

针对宝塔面板因内存过小MySQL频繁崩溃问题,首先在宝塔面板计划任务中添加“释放内存”任务,时间可以设置为每天凌晨的3点左右。
添加的Shell脚本如下:

pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ];then
bash /www/server/panel/script/rememory.sh
/etc/init.d/mysqld start
fi

关注微信公众号

菜单