对帝国cms、dedecms、phpcms等负载测试总结

来自:http://www.chinaz.com/web/2013/0729/311360.shtml

担心被骂,本不想写这篇文章。犹豫良久,最终还是决定写。希望能够帮助到一些朋友,认识到数据库索引正确设计的重要性。

由于我比较懒,就简单用文字描述一下,就懒得切图片证明了,懂技术的朋友可以自己测试一下,可证实我的测试结果是否真实。不懂技术的朋友信不信也无妨。

测试程序:

CMS程序:帝国cms dedecms phpcms

论坛程序:discuz phpwind xiuno

负载测试结果:

xiuno > discuz > phpwind > phpcms > ( 帝国cms ? dedecms)

从数据库设计来看(个人观点):

xiuno > (discuz 、 phpwind 、 phpcms) > (帝国cms 、 dedecms)

dedecms和帝国cms都是老牌的CMS了,从的数据库设计来看,不知是数据库设计者完全没有理解mysql索引的真谛,还是留一手以对高负载需求的用户收费改进?(希望不懂技术的朋友不要喷我,真正懂mysql索引的朋友可以自己看一下他们对索引的设计,虽然对于dedecms和帝国cms的作者来说,我只是一个晚辈,像您们这样有10多年开发经验的人,我比较尊敬,但我建议当前的dedecms和帝国cms数据库设计者还是再研究一下mysql索引吧,可以不相信我,但可以花点时间看看discuz 、phpwind的数据库设计吧,确实是比您们的好)。

如果有幸帝国cms作者能看到此文,希望您再重新设计帝国cms架构吧,毕竟这些年您一直在改进帝国cms的负载能力,光是通过分表技术提升,没有真正用到索引来优化,真的不行的,如果用对了索引,性能还会有更大的提升。

dedecms的创始人我算是和他认识,但现在dedecms却不是他的,比较遗憾,现在的dedecms这几年确实没多大变化,一直在打补丁,这样下去真是比较悲剧。

我的测试环境:

i3CPU 4G内存 1T硬盘 win7系统   apache 2.2 + mysql 5.0(普通环境没有优化过)

测试方法:

导入100万至1亿 不等数据,进行简单的访问测试

我的导入方法:

根据各个程序的数据结构写出导入程序,

1.先写一个PHP程序,将数据写入 e:/insert1.sql 这个文件,

2.然后再通过 LOAD DATA local INFILE ‘e:/insert1.sql‘ INTO TABLE `数据表名` character set 编码; 这种方式导入的,导入千W数据也就几分钟。

1、帝国cms

测试版本:EmpireCMS_7.0_SC_GBK (当前官方最新版)

先说说帝国cms,官方有一篇大数据测试贴(2千万数据、17.3GB数据库下帝国CMS超强生成速度 ),当年我看到这篇测试贴时,也觉得负载非常强大,但我测试后,令我失望了。

安装默认测试数据(共33篇新闻测试数据),首页改为动态首页 第一次访问0.670127010345459 第二次访问0.07926607131958

我导入100W数据时,数据库大小3.6G,首页第一次访问182秒,第二次访问155秒,我不知道当时帝国cms作者测试时,是否有测试过动态访问首页的时间。包括从6.0版起,每次更新都有说提升性能,但为何会这样?

帝国CMS官方的测试帖,就是误导人,忽悠人。

问题1.测试数据并没有提到动态访问首页或是生成首页。也没有提到动态访问列表页,和生成列表页。

问题2.测试统计的时间,也只统计了连接数据库之后的执行时间,并没有加上连接数据库的时间,这样很容易误导很多人,拿这个时间和别人统计了连接数据库的时间比。这样就差别大了。

问题3.每篇新闻的内容很少也就几行字。同时内容页模板,也非常简单,生成出来的文件也非常小,只有3K。正常的文章,都是上10K至几十K。

问题4.同时因为phome_ecms_news表 id 为主键,读取内容时,都是走的索引,所以动态访问内容页,编辑内容,生成内容页很快,都是理所当然的。

问题5.测试时都是通过分表来测试的,在真实站长做网站,不可能一开始就把网站内容分表。所以这和真实做站情况完全不一样。

像官方这种测试贴,真是误导人,而且还挂了几年。对于不懂技术的人,就是一种误导,让普通用户盲目的崇拜。

2、dedecms

测试版本:DedeCMS V5.7 SP1_GBK正式版 (当前官方最新版)

织梦CMS在知度CMS中一直公认的负载性能最差的CMS,确实很差。

我导入100W数据时,数据库大小只有330M,首页访问已经需要70几秒-80几秒才能访问。

3、phpcms

测试版本:PHPCMS V9_GBK 正式版 (当前官方最新版)

PHPCMS现在是由新的团队重新开发,也是号称高负载。

我导入100W数据时,数据库大小3G,首页访问需要20几秒。

4、phpwind

测试版本:phpwind v9.0 UTF-8 正式版(当前官方最新版)

phpwind以前和discuz比,速度上有优势,现在据说是全新开发,新版确实做了很大的改变(以前一直是discuz追随者,和discuz设计差别不是很大),现在这一变化,应该值的赞扬,但现在速度上不如discuz了,以前网页底部显示执行时间都去掉了。

我导入1000W数据时,数据库大小13G,

首页第一次访问8秒,第二次访问0.70477390289307秒

帖子列表页(默认排序)0.2x-0.5x秒  但我采用按“最新发贴”排序时,花了182秒才显示出来(我看了数据库设计,因为只做了按“最后回复”的索引,“发帖时间”的排序都没做索引,所以才很慢)

帖子内容页,没填充多少回帖也没具体测试

5、discuz

测试版本:Discuz_X2.5_SC_UTF8  Discuz_X3.0_SC_UTF8

dx3看来是dx2.5的加强版,从后台、前台设计看,都变化不大。数据库架构变化也不大。

我导入1000W数据时,数据库大小18G,

首页0.05-0.06秒,(也没太大测试价值,因为都没读到thread表)

帖子列表页(默认排序)0.07-0.09秒 但我采用按“发帖时间”排序时,花了181秒才显示出来(我看了数据库设计,因为只做了按“最后回复”的索引,“发帖时间”的排序都没做索引,所以才很慢)

帖子内容页,(没填充多少回帖也没具体测试)

6、xiuno

测试版本:xiuno bbs 2.02 UTF8

我导入1000W数据时,数据库大小15G

首页0.03-0.05秒

帖子列表页0.03-0.05秒(回贴排序)    0.01-0.03秒(发帖排序)

帖子内容页0.03-0.05秒 (没填充多少回帖也没具体测试翻页)

我导入1亿数据时,数据库填充到215G

首页0.05-0.08秒

帖子列表页0.05-0.08秒(回贴排序)     0.03-0.05秒(发帖排序)

帖子内容页0.05-0.08秒 (没填充多少回帖也没具体测试翻页)

总结:

xiuno 虽然负载很高,但是功能上有很大的控制,去掉了很多可能影响到性能的功能,功能方面我觉得要是能有一个像wordpress这样的一个平台来弥补,那将会有非常大的优势。

discuz 虽然没做深入测试,不过已经可见负载上面还是有缺陷的,同时thread表设计为 tid mediumint(8) UNSIGNED 所以最大数值也就16777215,所以他的设计也并没有往更高考虑。

phpwind 这次的新版本的改变,证明了他们的决心,要和discuz走不同的路,也能看出来他们更注重用户体验方面。程序性能已经次之。

phpcms 性能是比以前提升了,但是用户体验我是感觉不太好。不过能够说明CMS性能方面不如BBS程序。因为排序方式多,而且同一个页面列表也比论坛的多,所以让CMS性能不如BBS。

帝国cms 虽然程序官方一直强调负载,但真还不如phpcms,光是通过分表提高负载,真不是一个好办法。我个人愚见,程序负载高不高,第一步应该是正确设计索引,索引都没设计对,就用分表来解决,而且还要站长手动设置,完全增加使用难度。

dedecms 虽然用户量非常大,但数据库设计真不好,不但索引没设计对,而且还没分表,而且也能看出dedecms并没有考虑做高负载,毕竟上百W级数据的网站很少。

 

时间: 2024-07-31 18:28:43

对帝国cms、dedecms、phpcms等负载测试总结的相关文章

织梦cms、帝国cms、PHPcms优缺点解析

php才是建站的主流,cms这类程序又是用的最多的,占据主流的cms主要就是织梦,帝国,phpcms这三种的,这三个程序都是开源程序.国内用户众多. 一.从美观性来说(以官方默认模版为准 phpcms发布的V9美观性无疑是最好的.界面整洁大方.织梦一直以来都是一个绿色模版,中规中矩,帝国无疑是最难看的了,并且自己必须修改默认模板才能让首页显示数据,不能像织梦和phpsms那样自动调用,这个对于很多新手有点难度.不必过多解释. 二.从运行速度来说 帝国的操作生成速度应该是最快的,架构的原因吧,ph

织梦cms PHPcms 帝国cms比较

现在建网站不需要请程序员从基础的程序开发做起了,有专业的建站工具,CMS是使用最广泛的建站工具.CMS是Content Management System 现在建网站不需要请程序员从基础的程序开发做起了,有专业的建站工具,CMS是使用最广泛的建站工具.CMS是Content Management System的缩写,意为"内容管理系统",建网站用CMS足够了,不论是企业网站.行业网站.还是门户网站,CMS都能满足其要求.用CMS建网站虽然不需要开发程序,但还是需要网站美工的基础,就是必

DEDEcms和帝国cms的几点比较

前言:最近有很多人问我DEDEcms和帝国cms哪个比较好,我之前用2个都做过站的,所以能够说出它们大体的区别. 声明:我在此说明的是我一贯用的两种建站体统的感受,没有诋毁或者提升哪个系统!两个系统都是很强大的! 我们就从表到内比较下吧: 1.从官方模板看,DEDEcms的模板是div+css 而且对搜索引擎进行了优化,帝国的官方模板基本每个版本都是TABLE做的(包括最新的5.1版),不论是打开速度,还是引擎收录,DEDEcms在这方面做的比较好!但百度大多收录的是TAg!用DEDE建站最好把

轻取帝国CMS管理员密码

“帝国”CMS是一套著名的PHP整站程序,是国内使用人数最多的PHPCMS程序之一.令人无奈的是,“帝国”虽然把势力壮大了,却忽略了自身防护的建设,结果在黑客攻击下,“帝国”沦陷了.“帝国”CMS曝出的漏洞能够让黑客在1分钟内拿到管理员的账户密码,之后更能轻松获取webshell.下面让我们一起来对“帝国”CMS进行一次入侵检测. 漏洞的成因: 都说安全是一个整体,千里之堤毁于蚁穴,往往一个看似坚不可摧的网站系统,在某个不被注意的角落出现了一个极小的疏忽,结果导致整个网站被黑客攻陷.“帝国”CM

帝国cms文章页调用当前文章URL如何操作?

前面我们讨论过dedecms文章页调用地址(当前文章URL)如何操作,作为同台竞技的帝国cms也能在文章页调用当前文章URL吗?答案是肯定的!那就随ytkah一起来探索一下吧 帝国cms模板是在后台直接编辑写入数据库,不支持ftp传输修改模板文件.打开后台 - 模板 - 模板管理 - 内容模板,在相应的地方加上如下代码 http://www.***.com[!--titleurl--] [!--titleurl--]是一个标签参数,可以直接调用,注意不要在前方加斜杠/,本身已经有了. 保存模板,

帝国cms如何调用栏目别名作为分类标题?[!--classname--]标签不能用

用帝国cms建站安全性和生成速度会比dedecms好些,但ecms有个比较不方便的地方就是后台默认模板栏目那边没有一个seo标题设置的输入框,列表模板用的是[!--pagetitle--]标签,那么分类标题就是栏目名,如果栏目名设置长点在后台看是不是很不美观(如下ytkah做的图所示).那么有没办法调用帝国cms栏目别名作为分类标题呢? 我们可以用灵动标签来实现,将整个title标签换成如下代码 <title>[e:loop={"select bname from phome_ene

帝国cms调用随机文章 支持一个id段内的调用

随机调用文章可以从某个角度上说是更新了网页,如果是动态网页每次刷新网页那个调用列表都是不同,如果是静态网页后台重新生成html后也会变化.那么帝国cms调用随机文章怎么做呢?我们可以用灵动标签(e:loop),插入如下代码,哪里需要插哪里,哈哈 [e:loop={"select * from {$dbtbpre}ecms_news order by rand() desc limit 11",20,24,0}] //11是随机调用的数量 <li><a href=&qu

帝国cms 文章列表页读取newstext的内容

帝国cms的文章系统的内容是存放于文本中而不是存放于数据库中的,数据库中存放的是文本的路径,放与d\txt目录下,在用文章系统做单页面时,可能会在列表页读取newstext字段,如: [e:loop={"SELECT title,newstext FROM {$dbtbpre}ecms_article WHERE classid=$classid ORDER BY id LIMIT 1",0,24,0}]                     <h2><?=$bqr

帝国cms文章内容tags关键词设置调用方法以及tags静态化

说实话帝国cms用起来真的不好找一些功能,就比如说帝国cms的tag标签调用.需要注意的是帝国CMS文章的关键词和tags标签并非一码事,关键词标签是设置文章的关键词的,是用来给搜索引擎说明本篇文章的大意,而tags标签是用来链接文章的,对于SEOer来说,使用tags可以起到聚合的作用,增加网站页面,提高权重.那么帝国CMS如何调用当前文章内容tags以及实现tags静态化呢? 帝国CMS tags标签怎么设置: 1.登录后台,单击[栏目]菜单——[TAGS管理]——[设置TAGS参数]子菜单