今天将Magento性能测试搬到了Linux上
* 环境:
1. Apche2.2.3 + PHP5.2.13(With APC extension) + Mysql5.0.77(操作系统等并未特别优化) + Memcache.
2. Magento 1.4.1.1 + 官方的Sample Products.
以访问前端的“家具”分类页 http://localhost/mage/furniture.html 为例
* 测试结果:
|
第一次 |
第二次 |
第三次 |
第四次 |
1. 禁止Cache |
5,266ms |
5,655ms |
5,763ms |
|
2. 开启Cache:配置使用FILE(默认)作为Cache |
2,450ms |
2,454ms |
2,494ms |
|
3. 开启Cache:配置使用APC作为Cache |
2,309ms |
2,347ms |
2,718ms |
|
4. 开启Cache:配置使用Memcache作为Cache |
2,612ms |
2,738ms |
2,857ms |
|
5. 开启Cache:配置使用APC作为Cache,允许GZIP(开启DEFLATE) |
2,057ms |
2,110ms |
2,042ms |
1,958ms |
6. 开启Cache:配置使用APC作为Cache,允许GZIP(开启DEFLATE)在Magento中设置Block Cache(局部页面缓存) |
1,612ms |
1,554ms |
1,531ms |
1,560ms |
注:
* 以上四种测试均在开启APC系统缓存(optcode)下进行(我尝试将APC代码缓存禁止,但是却发现几乎没有什么性能影响), 所以以上缓存影响系统响应速度响主要是源于数据缓存!
* 这里提到的"数据缓存"主要是指页面中使用的公用数据(PHP变量)的缓存、一些公用的局部页面(Block)缓存:如页面的navigation部分.
从以上测试中可以看出开启缓存之后(无论是APC还是Memcahe),性能几乎都提高了50%, APC和Memcache差不多,APC还略高。这是由于APC使用内存来缓存数据,而Memcahce尽管装在同一台服务器却由于Socket连接开销而性能略低于APC.不过由于Memcahe支持分布式的环境,所以在分布式环境下还是建议略损失点性能而使用Memcache.
测试5的结果速度略快(0.3s左右的时间)是因为启动了gzip压缩。
测试6由于启动了Magento的Block缓存(页面主要部分将静态输出), 页面加载时间稳定在1.5~1.6s.
测试6的配置已经基本使Magento单页访问时间控制在2s之内,这个速度对当今互联网B2C网站仍然不令人满意。经简单测试:易迅和京东产品分类页访问时间基本控制在700ms~1s之间。
所以,Mageneto需要进一步性能优化,否则无法用在国内生产环境。
下一步优化:
1. 针对每一个页面小心设置更多局部缓存(Block缓存)
2. 整页缓存(Whole Page) + AJAX/SSI?