初始发现这个问题是在一次服务器搬家之后,发现我的“浮生若梦”这一文章归档加载异常缓慢,不仅仅是这个归档,都打开缓慢,这个文章最多,最缓慢,有将近10S的时间。TTFB有9S之巨,最开始,我以为是数据库的问题,开始着手查询,甚至修改数据库里的文章标题为数字,但是问题依旧存在,觉得是插件的问题,关闭所有插件有轻微的好转(<1S),依旧解决不了问题。
就放弃了以前的数据库和类似ALL IN ONE这一类的导出插件,使用wordpress自带的导出功能,使用过的一定知道这个导出是多么的简陋,通常就是可读的类似txt的文件,然后重新安装了LNMP环境包,这时候时间降低到了6S左右,但还是太长太长,该问题还是没有解决。
后来,偶然间发现,更改固定连接为朴素形式,可以大幅度的降低打开时间,在1.7s的程度上,但是百度推送对于/?=这种动态的链接结构相当的不友好,坚持用了半年,以牺牲推送的流量换取打开速度。
该问题在半年里搜遍全网,没有找到或者说没有解决方法,直到现在找到了解决方法,知道了问题的具体类型,依旧没有搜索结果。
我甚至逐一查看响应项,都没有发现问题。这是固定链接结构不同打开的时间不同,查询次数,查询项目的内容,都在一个量级上,就是只要不是朴素形的,就打开慢。
Memcached和Redis,CDN,WP super cake等各种缓存插件,甚至是CDN,都没有用。
我一度在怀疑mysql里走不出来,甚至买了4核8G的服务器用来对比,依旧还是老样子,TTFB只降低了0.5S。
问题的转机在今天的早上,我更新了网站的样式,重新测试用任何除了朴素这一固定链接之外的所有固定链接格式均无效,打开时间依旧在5S左右,准备彻底解决这个问题,在回想最初代的建站环境的时候突然想到最开始就没有遇见过这种问题,最初代的建站环境是LAMP环境,去查看nginx,依旧没有发现配置有问题,很正常的配置。
就新开了一个2核4G的服务器,搭建了宝塔和LAMP环境,弄好之后发现,在这个环境下,wordpress文章归档打开速度和朴素形的固定连接结构是一个速度,无论采用什么固定链接结构。都是1.7S左右。
我准备换了Nginx改用apache的时候,重新看了一下nginx的配置,发现了worker_processes这一项是默认是auto,我当时抱着试一试的心态改成了我的CPU核心数,再一测试,发现问题解决了。闹了半天竟然是宝塔面板这里的Nginx这一项配置导致的。神奇的宝塔,神奇的nginx。
问题到这里解决了,写这个是想着网上暂时没有找到相关的解决办法,给遇到同样问题的人一个解决方法。
另外,apache对于wordpress确实比nginx在某些情况下更快一点,对于我的网站,同配置打开快50ms左右。现在的文章归档有1.7S,算是我优化的极限了,因为插件用的多的过,暂时只能如此了。
也欢迎讨论,我的解决方法仅供参考,不一定都是这个造成的。
Comments 1 条评论
博主 匿名
感谢大哥分享,实在帮了一个大忙,我也试了各种方法,结果还是你这个靠谱,感激不尽…