这个博客已经建立两年多,但真正开始写是最近一个多月。之前一直没有遇到性能问题,想必是因为数据量小,只有个位数的文章,所有访问都是飞快。

现在文章即将过百,访问明显变慢了。前不久有国内的朋友抱怨访问速度太慢,查了一下发现,国内的问题应该是dns、路由和墙共同作用的结果。在http://ping.chinaz.com/测速得到:

线路耗时最短节点耗时最长节点平均耗时
所有线路 英国[海外] 深圳[联通] 3528毫秒
电信 四川遂宁[电信] 江西[电信] 3846毫秒
多线 浙江[多线] 安徽[多线] 3437毫秒
联通 安徽滁州[联通] 深圳[联通] 4832毫秒
移动 山东[移动] 深圳[移动] 3222毫秒
海外 英国[海外] 日本[海外] 2307毫秒

大部分访问总耗时都在3秒以上,这已经相当于不能访问了。听说cdn很高大上,专治这类疑难杂症,所以试用了一星期左右cloudflare免费cdn,结果居然更差,鄙视一下cloudflare:收费服务好于免费服务无可非议,但免费cdn还不如我自己家一台破服务器就有些说不过去了,难道你家这cdn不做性能优化,反要做劣化不成?针对国内的访问,我短期内是没什么解决办法了,只能先放一下。

更严重的问题是网站本身。为排除网络问题,我从家里局域网直接访问服务器,发现速度已经很糟糕了。不开joomla缓存的情况下,首页加载TTFB有900毫秒以上,打开joomla的debug模式,有如下结果:

Application 0.000 seconds (+0.000); 0.41 MB (+0.413) - afterLoad
Application 0.049 seconds (+0.049); 1.19 MB (+0.772) - afterInitialise
Application 0.092 seconds (+0.042); 1.59 MB (+0.408) - afterRoute
Application 0.532 seconds (+0.440); 2.48 MB (+0.890) - afterDispatch
Application 0.545 seconds (+0.013); 2.55 MB (+0.067) - ...
...

那个afterDispatch占用了440毫秒,应该是php代码解释和数据存取的耗时,这说明joomla框架负载上现有数据,让服务器硬件吃不消了。说来我这台"服务器"的硬件确实比较寒碜,它其实是一台2009年上市的Net-top,型号为Medion Akoya e2005d,配置如下:

处理器:Atom 230 (1.6GHz)
内存:1GB DDR2
硬盘:160GB
网卡:集成千兆

这样的配置,今天看来纯属废物利用。这台机器唯一的好处是省电,待机功率不超过30瓦,所以全时开机每年电费也就不到30欧元。弱是弱了点,但优化一下应该还能坚持到真正有流量那一天,到时候再升级也不迟。找到的优化方向有好几个:一是硬盘,据说有个工具叫hdparm可以让硬盘访问速度成倍提高;二是数据库,我现在用的mysql没做过任何优化,就是安装后的样子,应该还能榨出些性能来;三是joomla的清理,这个站搭起来以后,试用过不少插件,也不知道那些玩艺儿卸载是否干净;此外还有apache性能微调,准备试用一下mem_cache,应该比file_cache快很多吧。

另外,局域网大升级时,给服务器买的无线网卡好久前就收到了,一直没时间装,而安装这块新网卡需要给老旧的debian squeeze升级内核。

折腾这几样东东都有系统全面崩溃的风险,必须线下操作才行。决定用闲置的旧配件凑出一台机器,装上debian,然后把所有网站挪到上面,暂时顶上几天。在这几天之内,服务器就可以下线维护了。