经验分享:经过13个小时的排查解决了一个“小”问题

大家好,昨天遇到了一个“小”问题,竟然花费13个小时,排查了12中可能,最后终于解决。这个问题现象很奇怪,不是常见问题。我用的是“排除法”,根据现象找原因,原因“定位”了一次又一次,最后终于找到,花费了不少精力。这种事虽然不是经常遇到,但解决问题的思路是雷同的。这篇文章是和各位分享我排查问题的步骤,算是经验分享,希望能帮到你。

问题的基本情况

最近有一台服务器快到期了,里面有多个网站,WordPress网站、非WordPress网站都有。在到期之前把这些网站迁移到新的服务器上。两台服务器都是阿里云ECS,都是宝塔Linux面板,版本都一样。

其他网站已经顺利迁移,并测试成功,我使用的是传统搬家方法:在老服务器上用宝塔面板打包站点文件,导出数据库。在新服务器上创建站点,恢复数据库,解压文件,并转移到站点目录,修改数据库连接文件,解析域名。

之前的几个网站都是这么操作的,其中也有WordPress网站,很顺利。最后剩下一个“老”的WordPress网站,这是我当时刚学会Avada主题之后,制作的第一个网站,用的是Avada3.9.4(现在版本是Avada5.9),网站搭建好了之后没再更新主题,能用就行,不想折腾。但WordPress有更新。这个网站以前搬过一次家,从主机宝的环境迁移到宝塔环境,当时没出这个问题。

问题的现象与排除方法

我们把这个出问题的网站域名叫“A域名”,站点文件和数据库文件恢复之后,域名解析成功了。在浏览器输入A域名,会自动跳转到这台新服务器上的另一个网站“B域名”,这两个网站都是WordPress网站。首先排除浏览器缓存问题,也排除网络接入商问题。

1. 我的第一反应就是“重定向”出了问题。检查站点设置,还有站点根目录配置文件,未发现设置重定向。“重定向”排除

2. 第二反应是网站被黑了、被挂了。这个网站在老服务器上运行正常,再说跳转的是B域名,这也是我的网站,非第三方网站。“被黑”排除

3. 第三步,目标定位到“站点设置”。删掉创建的站点、站点文件、数据库文件。重新设置站点,重新解压,恢复数据库,设置WordPress伪静态等等,问题依旧。“站点设置错误”排除

4. 第四步,目标定位到“数据库内容问题”。彻底把数据库清空,问题依旧,“数据库内容问题”排除。

5. 第五步,目标定位到“站点文件问题”。彻底删除站点文件,上传了一个全新的WordPress安装程序,一切正常。这样就排除了宝塔的问题,目标进一步缩小。问题应该在这个站点文件里。

6. 第六步,我在本地电脑解压这个站点文件压缩包,报错了,尝试了几个解压工具,都报错。于是重新在老服务器上打包站点文件,下载,解压,还报错。目标锁定在站点文件。

7. 第七步,看来是某些站点文件错误,改用FTP下载站点,一个文件一个文件的下载,下载时发现有个错误,提示Avada主题目录有个footer-xxxx.php文件无法下载(如下图),xxxx是乱码。估计是我以前修改这个footer.php文件时做了个备份,起名用了中文,大家引以为戒。这个文件在宝塔面板里竟然看不到。除了这个文件,其他文件均能正常下载。于是将下载好的文件打包、上传到新服务器,问题依旧。心情糟透了……,站点文件打包后是1GB,服务器带宽5M,下载速度每秒600KB,下载需要半个多小时,上传还需要半个多小时。来来回回这么多次,竟然没有进展,无语……

经验分享:经过13个小时的排查解决了一个“小”问题 - error 经验分享:经过13个小时的排查解决了一个“小”问题 - error2

 

8. 第八步,想不到好办法了,把域名重新解析回老服务器,前后台一切正常,同样的文件、同样的数据库、一样的面板,怎么就不行呢。我开始怀疑这个网站也许常年不用,被篡改过文件,于是先从WordPress自身文件开始,给WordPress升级,当前是WordPress4.9,升级到最新的5.1,用一键升级的方式,在失败了三次后我放弃了。试试在线升级插件,经过漫长的等待,插件更新都失败了…… 心情糟透了+1,这台服务器配置不弱,宝塔面板配置过那么多次了,被我调校很流畅了,文件所有者都是www,权限也没问题。竟然连最基本的WordPress和免费插件都无法更新升级,再次无语…… 这个站点,真有问题。再次锁定是站点文件的问题。

9. 第九步,排查站点文件,先从WordPress文件操刀,一键升级不好用,用手动升级,WordPress官方给出了手动升级的方法,大概是先停止所有插件,删除wp-admin和wp-includes这两个目录,再把WordPress新版本这两个目录还有根目录文件覆盖上去,再进后台更新数据库,成功,具体请看WordPress提供的帮助信息。操作前先备份站点文件和数据库。可是更新WordPress后,插件更新还很困难,很慢,不正常。

10. 第十步,就在这时候,我想到了一件事,可以在新服务器上执行上面的操作,将wp-admin、wp-includes还有根目录文件,包括wp-config.php都被替换成WordPress原始文件,总不会还有篡改吧,可是,操作后,故障依旧……

11 第十一步,既然排除了WordPress文件,继续删除主题目录的Avada主题,保留WordPress默认的主题。还删除了所有的插件,问题依旧……

真正的原因终于找到了

1. WordPress网站结构不复杂,WordPress自身文件(已经排除),用户上传的主题和插件文件(已排除),也没剩什么了,还剩什么??

2. 罪魁祸首终于找到了,最后还剩下这个文件,wp-content目录里有个object-cache.php,把这个文件删除,网站恢复正常了。

后续

这个文件是memcached文件,这两台服务器都开启了memcached缓存加速。都说WordPress网站速度慢,有了memcached之后,网站反应和速度有明显提高,比缓存插件、CDN加速什么的来的更直接。

开启memcached是有条件的,WordPress也经常无法正常开启,这些在《WordPress加速课程》里有说明。(链接:https://study.163.com/course/courseMain.htm?courseId=1003543023&share=2&shareId=8156562)

在经历了13个小时排查,我对memcached的理解又得到了精进,稍后会把后续具体方法和说明追加到加速课程里。

这篇文章主要是和大家分享一种排查方法,因为很多问题的原因不是单一的,有的原因比较综合,有的意想不到。排除法是一种很笨的方法,但他能缩小原因范围。

这节课内容就到这里,下次课见。

1条评论

发表回复

请填写评论
请填写您的名字

最近流行

热点内容