- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Discuz!下Memcache缓存实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
前言: 在PHP+MySQL架构的站点中,本文重点从MySQL的角度去分析如何使Discuz!论坛(或者类似的PHP+MySQL架构的程序)应对大访问量。同时给出一些使用Memcache去减轻MySQL压力的建议。其中很多数据是个人测试的结果,如有不同意见,敬请留言告之。另外由于个人思维的问题,行文比较跳跃,特此声明! 。
系统分析: 单纯的从MySQL的角度出发,单台MySQL的数据库负载到每天上亿次的操作(每秒大概1100次MySQL操作,然后乘以86400)应该不是非常困难的事情。按照这个数据也就是说一个单MySQL服务器的论坛来说可以跑到2千万PV是不成问题的,我相信国内绝大部分的论坛都不可能做到每天2千万的PV,但实际情况并不是如此。当论坛PV超过百万的时候一台WEB早已经不堪重负了.
就我手头的一些数据显示,目前的Discuz!论坛的基本服务器架构是前面Squid顶着,后面才是一台DB在撑着。这种架构中,web服务器压力增大可以通过并行增加服务器解决,而MySQL压力却无处释放,在不考虑MySQL官方服务的情况下,我们通过合理的利用Memcache是可以达到减轻MySQL服务器负载的.
可能会有朋友说我们可以对数据表进行分表(注:此处分表是指通过PHP程序去分表,比如pw,dv的分表)处理,但是当前的情况是一台DB服务器已经不能支撑当前的数据处理了,通过PHP对MySQL进行的分表依然不能减轻MySQL的负载。(注:本段文字针对已经成型的系统,如果是独立开发的系统在架构前期就进行数据的同步分区还是不错的。) 。
还可能有朋友会说利用MySQL的主从构架,如果你提出这个问题,我就很明确的告诉你,回去看看手册吧。在Mysql Master/Slave 模式中,Slave主要是来备份数据的,只有当Master出现故障时,Slave才会接过Master的服务,对外部请求进行处理,直到Master恢复正常。就是说:在Master/Slave中,要么是Master在服务,要么是Slave在服务,不会Master/Slave同时提供服务。使用MySQL主从依然不能有效的降低MySQL的负载.
或许你又会问我为什么不使用MySQL集群(MySQL Cluster),那可是白花花的银子啊,同等金钱的付出下,获得最大的收益才是王道。PS:说句题外话,MySQL手册中将MySQL集群解释为MySQL簇,不习惯.
其实在MySQL5.1中的MySQL分区(MySQL Partition)是个很好的东西,它允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。我认为这个才是当前情况下,最积极有效的降低MySQL负载的解决方法之一。但是遗憾的是,这种MySQL分区的方式我个人没有使用过的经历,也不见有相当充分的案例表明它是稳定的或者不稳定的。所以我还在徘徊中。如果你知道,请麻烦告之!有朋友说腾讯是在用MySQL分区,但是遗憾的是我没有得到确切的数据.
好了分析总结了这么多种降低MySQL负载的方式之后,在用户环境需求等特定条件下,我得出结论在当前情况下,缓解Discuz!论坛的MySQL负载比较有效的方法就是使用Memcache! 。
。
使用Memcache的理由: 1.Web Server(Lighttpd、Nginx据说都比Apache效率高好多,大家可以试用下)对CPU要求高,对内存要求低;而Memcached Server是对CPU要求低,对内存要求高,所以可以搭配使用。在对前端的Web Server上安装Memcached Server是可行的。 2.金钱金钱金钱,最少的付出,获得最大的收益。 3.简单简单简单,对于一个架构合理的系统来说,添加Memcache的支持可能只是一个批量处理文件的过程 。
Discuz!使用Memcache 1.在config.inc.php中增加 。
2.在include/common.inc.php中 。
3.修改include/db_mysql.class.php中的fetch_array、query这两个方法,并添加query_mysql方法,代码如下:
4.将需要使用Memcache缓存的SQL查询的代码由 。
修改为 。
注意并将 。
修改为 。
没有while的$db->fetch_array可以不用修改.
下面代码有用得着的就拿去:
回头放出个小工具批量替换下就可以了。 在EditPlus中可以这样替换:while\([$](.*) = [$]db->fetch_array\([$]query\)\)替换为foreach($query as $\1) 5.完成了,测试吧!~ 。
最后此篇关于Discuz!下Memcache缓存实现方法的文章就讲到这里了,如果你想了解更多关于Discuz!下Memcache缓存实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
和Discuz!X1.0修改的位置不同,具体操作如下: 打开\template\default\common\header_common.htm文件,找到 <titl
前言: 在PHP+MySQL架构的站点中,本文重点从MySQL的角度去分析如何使Discuz!论坛(或者类似的PHP+MySQL架构的程序)应对大访问量。同时给出一些使用Memcache去减轻MyS
最近的一次应用是基本完成了业务系统,需要整合Discuz进去作为交流版块使用。于是,涉及到用户系统的整合和版面的增删操作。UCenter提供了API进行用户的增删管理,自然可以用,但为了保证用户id
但Discuz的同步登陆问题是个头疼的问题,网上搜搜,类似的文章、贴子无数,也参考过很多的文章,始终没能完美地解决自己系统登陆后同步登陆Discuz的问题;在开发机上正常的,放到服务器上就会出现无法
Discuz 密码错误次数过多导致等待15分钟的解决办法 修改文件:在function/function_member.php找 $return = (!$login || (TIMESTAMP
在论坛后台 => 全局 => 附件设置 => 远程附件:选择“启用远程附件”,然后设置 FTP 帐号信息,如下图所示: 然后设置远程附件的目录,如下图所示: 远程附件的
(1)减少服务器流量 (2)减轻服务器负载 (3)节约 WEB 空间 第1、Discuz!5.5 远程附件的设置方法,如图 1 所示配置 设置方法: 1. 如果某 FTP 帐号对应的
Discuz!7.0是康盛创想(Comsenz)公司于2008年12月份发布的一款论坛BBS建站产品。Discuz!论坛的积分设置很灵活和详细,在论坛后台的工具 => 积分策略向导能够完成论坛
关于DISCUZ!论坛标签SEO优化需要参考百度指数和第三方统计数据,具体的需要注意一下几点: 1.参考百度关键字的时候,不要选择过热的关键字。基本上过热的关键字都在做推广,合理的方法是做。热门关
1):Discuz!对安装环境有什么要求? Discuz! 具备跨平台特性,可以运行于 Linux/FreeBSD/Unix 及微软 Windows 2000/2003 等各种操作系统环境下。推荐
近日,康盛创想BBS与SNS社区产品双剑合璧,推出了Discuz! 7.0和UCenter Home (简称UCHome)1.5。这两款社区产品不仅通过UCenter 1.5用户中心打通了会员中心的
后台操作提示数据库错误! Error:Unknown column 'app1' in 'where clause' Errno:1054 SQL::SELECT * FROM `a10171557
今天一个朋友的Discuz X2论坛需要批量替换帖子的内容,帖子数量上万,一开始是通过设置词语过滤,发现无效果,只能通过数据库批量替换了,具体方法请接着往下看。 Discuz X2论坛
由于discuz x2,ucenter,第三方平台通信,但是由于整个ucenter的同步接口存在很多问题,尤其同步信息那块,问题多多,无奈之下,只能把用户密码修改,注册用户,找回密码等功能放在第三方
在discuz x2后台设置各种用户组个性签名的长度,新手10个字等,但是实际运用中发现,这个限制一直无效。后调试代码发现,实际在提交签名后,字数限制会变成200。只能一步一步的调试,最终发现问题出
内存优化 目前支持的内存优化接口有 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache、Redis 五种,优化系统将会依据当前服务器环境
/template/default/common 公共模板目录全局加载 block_forumtree.htm DIY论坛树形列表模块 block_thread.htm
1:批量删除回帖 pre_forum_post 表中存储的是论坛帖子和回复。每增加一个帖子或者回复,pid值+1. first值为1的,代表是主题。first值为0的,代表是回帖。&nb
很多站长长年累月的自己把导航改完又改,只想把自己的版块都一目了然的放上去导航中。 现新版本內置了此功能(虽然是一个一显示不能直接设置使用下级来显示) 设置: (分区) (版块)
1、验证码的产生 1、如何在模板中添加一个验证码 在X2中验证码的模板部分独立为一个模板文件(template/default/common/seccheck.htm),供
我是一名优秀的程序员,十分优秀!