Tag Archives: Discuz!

Discuz! 优化的误区

很多 Discuz! 的用户在论坛规模达到一定程度上,就要经常性的考虑优化的问题。现在网络上的很多热心的技术人都分享了 Discuz! 的优化经验,应该说,很多经验还是不错的,但也有的帖子可能会让用户走入误区。

误区一:SQL 慢,加索引

多数情况下,数据库可能是瓶颈。通过 Slow Query Log 发现执行时间比较长的 SQL 并不难,于是有的人一看 SQL 走了全表扫描,干脆添加个索引好了。

其实这个地方值得商榷的。第一,必须确定一下该 SQL 执行次数到底是怎样的? 执行真的很频繁? 那么对应的页面是否通过 Cache 可以减少对 DB 的冲击? 如果可以,尽量不要添加索引,索引本身对表的负面影响也是很大的,比如降低更新速度,影响并发能力等。

误区二:瓶颈一定在数据库上

前面说,数据库”可能”是瓶颈,但不总是瓶颈,优化的第一步,必需要有针对瓶颈优化。很多时候,图片访问带来的压力甚至比数据库压力还大 — 有的用户数据库、用户上传的图片文件、Web 服务器都扔到一台服务器上,这时候,第一手去调整 MySQL 或许会有作用,但价值不大。

应该说,瓶颈的有效定位的确是个技术活儿,对于一个新的论坛环境,也有人用逐一尝试法来做,这倒也没什么。

误区四:盲目的静态编译 MySQL

静态编译 MySQL 有好处,但如果系统已经在线上运行了,在原有环境中进行静态编译未必能带来多大好处。我问过一些朋友,静态编译到底带来多大好处? 没有几个人能说清楚。

对于 PHP 也是这样,如果一次优化从其它方式上能带来更清晰、直接的开销,就不要重新编译

误区五:反复尝试,但不建立基准数据

这其实是第四点的延伸。而建立基准数据,实在应该是优化的最基本的步骤。这样才能有效的评估优化的效果。否则的话,象误区一描述的,添加了一个索引,短期内可能感觉快了,长期看,性能可能又会慢下来。

误区六:一次进行多个优化步骤

这可能是比较普遍的”习惯”了,有的朋友喜欢一次调整多个参数或是多个环境的设置,然后观察效果。如果每个步骤都是”对”的话,那么效果看起来是好的。如果有的步骤调节”错”的话,可能会抵消那些有效果的优化步骤。

优化策略是个见仁见智的问题。以上只是个人浅见,欢迎留言探讨。

EOF

此文作者:, 位于 Web 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.

关于 Discuz! 的二次开发

可能是因为 Discuz! 庞大的用户群的原因吧,发现有些中小网站也有在 Discuz! 基础上做二次开发的,巧的是,到了某个阶段,不约而同的遇到类似的问题:开发进度明显滞后。

个人觉得 Discuz! 设计的初衷是面向中小站长的,对于二次开发可能并不是很重视。去官方论坛看了半天,甚至都没有专门二次开发的板块。莫非大家的二次开发都是各自为政,摸着黑搞的么?(好像的确是这样,代码开源,对着修改就成) 一些简单的门户开发估计问题都不大的,如果业务复杂一些,并且流量相对较大,可能隐忧就会比较明显了。

有次因为要验证一点东西,看了一点 Discuz! 的代码,发现一些基本的模块性能上并非很好(我自己并不很懂 PHP,只是出于性能考虑罢了),类似的页面在一定规模下并不会对性能有太大影响,可一旦突破某个量级,影响就非常明显了。有的网友可能会说,别装了,你不知道 Discuz! 功能有多强大吧? 问题可能恰恰就在于功能强大这儿了,一个软件如果自身已经在一些细节上考虑的足够细致,那么无疑也会给二次开发带来不必要的开销。就这一点上说,或许 Discuz! 有必要开发一个面向二次开发的版本,削减一些锦上添花的小功能。

另外,UCenter 这个 SNS 产品我觉得也不会有太大作为,千站一面的 SNS ,除了让大家消磨一些无谓的时间,会带来什么创新呢?

这只是我心血来潮,对产品设计的一点思考罢了,可别真的绕到 Discuz! 到底有哪些优点上去…

EOF
更新,有朋友和我说

Discuz! 代码里面本身包含监控隐私的东西,如果你的网站达到一定数量的用户,程序会触发通知 Discuz! 公司。

谁来证实一下?

附加阅读:

此文作者:, 位于 Web 分类 标签: , on .
转载须以超链接形式标明文章原始出处和作者信息及版权声明.