最近帮朋友升级了论坛,把数据库换成了postgreSQL,运行有一周。通过前后对比才发现pgsql性能有多强悍,或者说mysql有多低能。 论坛地址: www.ifxtx.com 网络带宽:100

http://cookingbsd.blog.51cto.com/5404439/952375

最近帮朋友升级了论坛,把数据库换成了postgreSQL,运行有一周。通过前后对比才发现pgsql性能有多强悍,或者说mysql有多低能。 
论坛地址: www.ifxtx.com 
网络带宽:100M独享 
论坛流量:日均IP 8K,日均PV 35K 
论坛程序:dz7.2 
论坛数据:用户15万,主题32万,回帖502万,数据库3G左右。 
系统配置: 
  web server 为 DELL 2950III  4核*双CPU E5320 1.86GHz,8G内存,SAS组RAID5,Centos6.2 X64,nginx,php-fpm,xcache 
  db server 为 DELL 2950III 4核*双CPU E5320 1.86GHz,8G内存, SSD盘 * 3 做RAID5,Centos6.2 X64,postgresql 9.1,mysql5.1 
  webold server 为 DELL R710 , 8G内存, SAS组的RAID5,Win2003,Mysq 5.1,IIS 

之 前论坛是 webold 上面跑也跑数据库,论坛相当慢,首页打开时常需要12秒多。IIS经常挂掉需要定期重启。后来启用了db服务器,并且加大了dz数据调用频率,系统负载有 所下降。首页打开非缓存时在7秒左右。不过IIS还是时常抽风。询问得知mysql连接数要开到1000以上才能保证论坛不出现“数据库无法连接”的白 板。不过我发现实际开的是7000! 
 
因为数据库实在不给力,遂决定使用高效的pgsql做替换尝试。 

于 是使用web + db的组合方式。web上php-fpm开了150个最大进程,前端是nginx开了4个进程;db上只跑pgsql,开了500个最大连接。一番折腾测 试结果还不错,于是在上周六做了系统切换。经过这段时间性能监控,对于pgsql的表现非常满意。说非常而不是极其满意这是因为之前对pgsql有一定了 解,所以对其相比mysql的优异性能表现没太多意外。但对于从未接触过mysql之外的人来说也许会震惊的! 

论坛在线简要对比,在线人数约2K(session有效时间30分钟): 

项目 webold + db(mysql) web + db(pgsql)
index非缓存刷新 大约7秒(非缓存清空) 2秒左右(清空所有缓存包括模板)
index缓存刷新 大约1秒 30-50ms
forumdisplay主题列表 100-200ms 30-120ms (与版块主题数量有关)
post帖子内容页 100-200ms 30-50ms左右(不分缓存与否)

除了在版块主题列表上差距不大之外,其他项目差别非常明显。并且pgsql各项数据与在调试阶段无流量压力时的值没啥差别! 
为啥调试阶段的数据库性能表现与上线后没啥差别呢? 除了pgsql程序本质优秀之外还有个重要因素:pgsql是行锁,而dz默认采用的mysql是myisam表锁。流量越大表锁对性能的影响越恶劣。具体解释请看这儿http://www.discuz.net/thread-2934412-1-1.html 

下面是21点论坛高峰期服务器状况截图: 
这些是webserver的 
    


这些是dbserver的状况: 
   


这是nginx的状况以及webserver连接数: 
 
 


如果以上数据只是让你觉得流量不小,服务器性能比较好,所以服务器压力不大。那么就再看一张图: 
 

上 图是跑在webserver上面的pgsql连接池程序pgbouncer ,设定的非性能最佳的trasaction模式而是session模式。但实时连接数如此之低,没超过10个,是不是让你震撼了呢?你再回头看看上面 db-top.png 这张图中postgres进程数量作相互对证,就知道pgsql有多强悍了吧。 
以 前mysql要开1000个连接,这并不代表mysql可以处理1000个这么多个连接请求,而反倒是因为它太慢处理不了不能及时处理完论坛而只能增加最 大连接数让被阻塞的连接请求处于队列中,从而用户在打开页面时不会出现mysql数据库无法连接的错误页面,而是一直等待罢了。
而pgsql因为 处理效率高性能出色,所以可以尽快处理完web请求从而接受新的请求,于是总的连接数反倒是减小了。小得连我吃惊的地步。上线后做过(短时间)极端测试, 把pgbouncer允许连接数和pgsql最大连接数改到30个,论坛也运作正常。可见截图数据可信。


总而言之,如果你是新论坛,数据量不超过100万,那么用mysql没啥性能问题(表损坏除外)。但如果论坛已经上线运行已久,数据量过百万上千万,那么除非用硬件去堆否则mysql的低能表现会让你头疼甚至崩溃。

所以用DX2,2.5慢如蜗牛的站长们不要吐嘈dz。dz只是功能太多而已,根本原因在于mysql太垃圾,无法应付dz的复杂查询以及高流量而已。
 



附注:以上数据那么漂亮,除了因为pgsql实在是太出色之外,还因为我对dz代码在各个方面做了相当的优化。极大减小了数据库压力。详细在此http://www.oschina.net/question/126398_36342 

附注2:以前服务器最高跑到90M带宽。后来因为cn备案问题不得已换了几次域名,折腾一番导致现在流量下降不少。不少老会员还没找到新庙门…… 

附注3:这可是dz7.2没有memcache机制哟!做过xcache测试,性能提升不明显,看来memcache在高流量下才对性能有提升,在目前并发流量下提升不明显。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
环境要求: Discuz! 兼容 PHP 4.0.6, MySQL 3.23, PostgreSQL 7.1 以上各版本和各种操作系统环境,在安全模式下也能完好运行. 算法及数据结构: 我们始终致力于开发最优化的算法和数据结构,从事 PHP 与 MySQL 的开发的过程中,我们力求每行代码都充分发挥开发工具的效率优势,Discuz! 是一个挑战 PHP 应用极限的应用程序. Discuz! 开发组具有丰富的 cache 处理经验,到 Discuz! 3.0,内建了包含系统设定到模板系统在内的 PHP 语法生成内核,此内核可直接生成程序格式的缓存,cache 技术的广泛应用使得 Discuz! 的代码效率再上新的台阶. Discuz! 中包含了众多独创或独有的处理方法,使得 Discuz! 可以轻松承受比其他类似产品更多的贴子数量和在线人数,成为目前最高效快速的论坛产品之一.在实现同样功能的前提下,Discuz! 力争占用数据库资源最小,页面处理时间最短.在一台配置良好的 P4 级 UNIX 主机上, 100 万贴论坛平均页面处理时间不超过 0.03 秒(搜索除外),页面平均数据库查询数不超过5 个,最大承载在线人数超过 5000 人,如果构建 Apache 和数据库分离的双机系统,负载能力和速度都将获得更大的提升. 数据库操作: Discuz! 依靠专门设计的数据库操作类实现数据库存取,目前提供 MySQLPostgreSQL支持模块,具有专有错误处理模块,通过 Email 实时报告数据库错误. 数据结构更经过精心的设计,从字段到表的分配,索引的构建,都经过缜密的考虑,相同数据量的论坛,Discuz! 占用的数据库容量和其他类似产品相比要小. 程序内核中查询遵循 ANSI SQL 规范,短期内即可通过新增数据库类的方式移植到 SQLServer 等其他数据库系统. 模板体系: Discuz! 全部版本都使用模板与程序分离的方式构建,Disucz! 2.0 是目前惟一一个采用编译模板系统构建的商业化产品,该核心由 Crossday Studio 独立开发,与传统的模板技术相比更快捷,内容修改也更容易,随着 Discuz! 2.0 应用的普及,必将引起一股编译模板技术应用的高潮. 依赖于 Discuz! 3.0 的编译模板体系,全部提示信息,均在完全不影响程序效率的前提下,用语言包实现,自 2.0 以来,彻底支持多模板,多语言和多风格.每个模板可使用不同的语言界面,不同的内码设定和不同的风格设置,模板可在线编辑,也可通过 FTP 直接上传,给界面定制带来了前所未有的方便.不懂 html 的新手通过风格设置的修改,或设计高手手工修改模板,都可实现论坛外观的完全定制. 论坛功能: 除具有满足讨论需要的全部功能外,Discuz! 还对标准的论坛体系做了丰富的扩展. 全论坛编译模板和国际化内核,更换前/后台提示语言不需要修改程序和模板 可自定义最大在线人数,UNIX 负载情况限制用户访问论坛 附件采用文件存储,读取速度更快,占用数据库更少,同时对可能发生的安全问题做了一一处理,又有完善的从记录到文件的全面管理功能. CookieFree 技术,得益于自建的会话跟踪体系,Discuz! 不需任何设置即可在不使用Cookie 或被禁止的情况下正常登录或使用论坛. 全新设计的搜索功能,使得新的搜索比以往快数倍,具有可共享的搜索缓存,有效减少数据库负载. 自定义 Discuz! 代码功能,可对代码进行扩充并支持最多三个动态代码参数. 自定义会员信息项目功能:支持选单及在帖子中显示该自定义项目. 独有的内建论坛访问与流量统计系统,紧密结合论坛自身的功能,在实现一般外挂统计系统全部功能的同时,最大限度的降低了系统资源的消耗. 预留完善的插件接口,插件只需通过修改设置文件即可被加入到论坛系统中;程序中也处处考虑插件的应用,即使插件对数据结构有修改,也不会影响论坛的正常使用和升级. 权限控制: Discuz! 具有全面而严密的权限与访问控制系统.内置不同的会员用户组,系统用户组,自动根据积分或系统头衔确定用户所在组.用户组可任意编辑和添加,各组拥有可调的十几项关键权限设定,涵盖论坛使用的各个方面. 支持交叉用户组,普通用户组和管理用户组可以交叉并得到交叉权限. 版主和超级版主的权限可以具体设定,并具有自己的管理面板,可进行允许范围内的管理操作. 论坛支持密码加密,同时可在每个论坛内给用户组分配不同的权限,实现最大限度的权限与访问控制. Discuz! 支持积分和具备防止作弊功能的用户评分,可设定积分的加分方式,也可设定用户评分权限及最大评分数;可设定主题和附件的查看/下载积分,并可设定具有此设定权限的用户组;贴子中独有 [hide] 代码,可根据回复或积分隐藏相应内容,满足不同要求. 后台管理: Discuz! 具有快速智能的论坛后台管理程序,不仅提供详细周密的论坛和用户组权限设定,而且,可根据 10 余种以上的条件实现用户编辑,批量删贴,附件编辑等,且可自动对有关的数据,如用户发帖数,积分,论坛数据等等做智能处理,确保了批量操作后统计数据的精确性.内核级访问控制,可设定及屏蔽恶意刷新及 DoS 攻击 管理程序中可方便的修改界面方案中的各种参数,熟悉以后新建一个界面方案只需一分钟就可办到,同时也可在线编辑模板,或进行模板的导入,导出操作.每一个管理操作都被记录在案,方便管理员的互相监督.同时提供版主管理记录功能,可按时间顺序查看版主进行的每一个管理操作,对版主负责程度的评定更具有科学性. 数据维护: Discuz! 提供了迄今最强大的 web 界面数据备份和恢复功能,具有足以应付超大数据库的分卷备份能力,使得管理员不需任何服务器权限即可轻松维护 Discuz! 数据库.更有远程数据读取功能,两台主机之间传递论坛数据不经过本地不消耗任何本地资源即可完成,创建备份论坛或更新镜像论坛易如反掌. 后台管理程序中可方便的查看数据库的使用情况,同时提供数据库优化功能以消除存储碎片,保证存取效率. 安全保证: Discuz! 3.0 坚固的数据结构和最少化数据库查询,使得 Discuz! 可以在极为繁忙的服务器环境下快速稳定运行 在用户资料存储中和传递中,密码全部使用 RSA-MD5 不可逆加密,有效保证论坛及用户资料的安全. 专门为脆弱页面设计了防刷新系统,自动阻止恶意访问和攻击. Discuz! 独有的全程操作记录,完整详细的记录了论坛运行情况.管理记录采用 PHP 文件格式存储,既能防止被非法查看或下载,又不占用数据库资源.同时具有自我尺寸控制技术,各种记录自动保存最新的 500 条,即使管理员也无法删除各种记录,犹如黑匣子般提供最可靠的安全保证. Discuz! 能有效处理页面格式,保证页面及表格的完整性.安全检查应用于每一个Discuz! 代码中,可自动屏蔽贴子及签名等中的恶意代码.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值