code人生 · 2015 年 12 月 12 日 5

重新上路,以及waiting TTFB页面请求时间过长的解决办法

我也不知道这是第几篇类似意思的文章,本文大意就是我又回来写博客了,虽然过去这一年几乎没更新文章,但是我从没放下过,至少两个月因为更换服务器的关系,服务器来来回回重装过十几次,几次都是倒在了MySQL上。出于对乌龟壳的鄙视,最终还是坚持使用了MariaDB,不过是5.5,未能成功升级到MariaDB 10.0,有点小遗憾。这次重新搭建服务器环境,我直接忽略了兼容性,直接从PHP 5.3升级到了PHP 5.5、nginx也是直升最高版本,并且放弃了Xcache转而使用PHP 5.6自带的Opcache对象缓存系统。

上个月在国内备案失败之后,曾经生出了将个人博客的内容全部导入到Lofter的想法,并且以其为图床,但是最终还是没有这个勇气。一是因为舍不得这四年的心血,二则是对于Lofter这些商业化的产品寿命持怀疑态度,虽然各大门户的博客都活了十几年,但是中国内地轻博客的先行者点点已经接近死亡了,我在上面存放的三个博客都被干掉了。独立博客最大的好处就是可以自己把持大部分事情,至少在图片的保存,缓存系统和SEO方面拥有足够的自由。但是由于成本所限,服务器的性能应该是困扰大部分独立博客博主头疼的主要问题。

用WordPress来建站的博主应该都或多或少的访问过我爱水煮鱼的博客,他和他的WPJAM团队确实是国内做得比较好的,在插件和缓存的选择上我也是参考了他的博客。首先自然是Memcached缓存,我一个256MB内存的KVM小机器,打开Memcached之后,正好能够把内存用得七七八八,不浪费一点硬件性能。同时Memcached缓存也不是一般的磁盘缓存和对象缓存的速度能比得上的。不过我下面要说的,主要还是几年以来一直困扰我的一个大坑:Waiting TTFB页面请求时间过长。

从2012年左右开始使用VPS和lnmp架构之后,我的个人博客zhangzhao.me一直有无缓存下访问过慢的问题,从Chrome的Web Dev工具对Network的分析来看,除了Jetpack插件因为国内被墙的问题,JS加载稍慢或者失败,最费时间的还是域名本身的请求响应时间,在不打开缓存系统的情况下,首页和后台页面几乎都需要半分钟才能完全加载,这肯定是不正常的。然而几年间我都没找到真正的问题,我一直以为是DNS或者服务器网络的原因。

但是前几天觉得数据库有些臃肿,心血来潮想将MySQL/MariaDB的存储引擎从InnoDB更换到MyISAM。说起来,最初使用InnoDB的原因挺可笑的,因为当时VPS的内存比较大,我觉得就该上一个为密集写入设计的数据库存储引擎,所以选择了InnoDB。但是我显然想太多了,个人博客这种一天写不了一篇文章,长期空窗的网站,读取的次数远胜于写入,所以MyISAM明显更能胜任,而且它占用的空间、对硬件的需求也要更低。

所以昨天晚上将MariaDB数据库的存储引擎从InnoDB换到了MyISAM,操作很简单,在MySQL控制台中用下面的命令就行。发现切换到MyISAM之后,开缓存的情况下网站速度简直秒开,不开缓存的情况下,网站加载时间也从30秒以上降低到了10秒左右,对于服务器在美国、仅写写日记的个人博客的后台来说,10秒并不难等。

#MySQL从InnoDB切换至MyISAM命令

#table_name为数据库表名

ALTER TABLE table_name ENGINE=MyISAM   
5
0
希望看到您的想法,请您发表评论x