Drupal10.0撑爆MySql数据库·网站瘫痪无法登陆

  早上一到办公室,白龙seo就开始了检查网站数据的工作。其中,建站早、流量大、收录好、排名多的其中一个网站突然就打不开了,着实吓了一跳。
 
  因为,自从使用drupal程序建站以来,还从来没有遇到过这样的问题。网站是基于drupal10.0开发,服务器用的是阿里云虚拟主机,自带数据库空间是500M,安全性自然不用担心。那会是什么原因呢?百思不得其解。
 
  进入阿里云虚拟主机后,发现数据库区域出现了报警的红色,数据库空间已经使用了109%,即545M。而虚拟主机自带的数据库空间只有500,因此,基本可以断定是数据库空间被占满了。所以才导致网站打不开,后台登陆不上。
 
  既然数据库空间不够,那么,理论上说,增加数据库空间即可解决这个BUG。为了解决问题,先通过阿里云虚拟主机给数据库增加了100M的空间,然后重新启动了虚拟主机。结果数据库空间增加至600M,不再报警了,前端部分页面可以打开,而后台仍然无法登陆。
 
  根据经验,可能是缓存问题导致上述结果。因此清理缓存的方法需要在有条件的情况下操作。例如,网站无法登陆,则后台自带的,或者通过第三方模块配置的清理缓存的功能是无法使用的;另外,之前在本地写的批处理清理缓存方法也无法生效。目前,能操作的可能也只有通过数据库来清理缓存了,方法有两种:一是通过阿里云虚拟主机登陆数据库;二是使用Navicat工具远程登陆数据库。
 
  不管用哪个方法登陆数据库,如果数据库名称、帐号、密码也不记得了,没关系,在drupal10.0程序site目录下的setting.php配置文件中查看即可。然后在数据库中打开命令窗口,输入如下清理缓存的命令:
 
use database_name;
TRUNCATE `cachetags`;
TRUNCATE `cache_bootstrap`;
TRUNCATE `cache_config`;
TRUNCATE `cache_container`;
TRUNCATE `cache_data`;
TRUNCATE `cache_default`;
TRUNCATE `cache_discovery`;
TRUNCATE `cache_dynamic_page_cache`;
TRUNCATE `cache_entity`;
TRUNCATE `cache_menu`;
TRUNCATE `cache_page`;
TRUNCATE `cache_render`;
TRUNCATE `cache_toolbar`;
 
  或者参考《重建缓存:通过数据库清空drupal所有缓存》文章清理系统所有缓存。
 
  然后,“回车”一下,即可清理系统/数据库缓存。再次打开前面页面、登陆网站后台,功能全部正常。切换到阿里云虚拟主机,查看数据库空间,发现只用了130M,即清空的缓存占了415M的空间。
 
  另外,也可以把网站上占用空间大的图片压缩下,再次上传,进一步节约数据库资源,数据库空间是真心贵。白龙实际操作中发现,阿里云100M的数据库空间的价格是175元/7个月。因此,压缩上传的、不太重要的文件,既能节约系统空间,也能提升网站的打开速度。
 
  为了防止缓存导致数据库被再次占满,影响网站正常运行。实际工作中,要定期清理缓存,例如,每次上传完内容后清理一次缓存,或者每周清理一次缓存,等等。