我们的论坛在线会员人数最高达到2000人 03年就开始使用 VBB2.5版本的论坛,用了3年,也改了3年 起先我们碰到的问题是,数据库压力大。没有办法。只有把帖子写成静态文件,缓解数据库压力。改了以后WEB服务器负载能降到3(之前能高到20),数据库负载降到2(之前能高到20) 用LINUX主机的都应该知道,负载达到20以上,基本离死不远了。 这么多年用下来,觉得VBB的代码写的还是很不错的。所以我们这次改版,我还是选用了VBB 3.6的版本。并且使用了魔力脚本的VBB3.6,改之前我考量过这个版本。觉得在2的版本上有很大的改进。加入了数据缓存机制。本以为,VBB的缓存能够很好的解决数据库压力,这样我可以摆脱静态页面导致的一些功能无法实现。 上周我们进行了新老BBS的数据切换上线。上线不到1个小时,负载窜到30。这是我不敢想象的,没想到效率会这么低下。当时只有200会员在线(游客不计)。检查了一下WEB网卡的流量。很惊异的发现网卡流入量瞬间能达到90M,这是什么概念?再查看数据库服务器网卡流量,出口流量也有80M,也就是说,WEB流入数据有80M是从数据库服务器过来的。检查数据库进程,是datastore这个表的频繁读写造成的。datastore是存放一些基本数据的缓存表。程序中,每访问人数都会去读这张表,该表的大小为1M,全表读区。可想而知,80M的流量从何而来。 之后,发现在includes/config.php 文件中有一个可以设置将缓存文件写到WEB文件的选项。开启后,网卡流量不怎么高了。但WEB服务器的内存在很短的时间内被吃光。SWAP也被吃的光光。系统负载能升到400!!!!其实早在40的时候,BBS访问就很慢很慢了。 设置中还有一个选项,可以用memcache服务器进行数据的缓存。于是,我又在WEB上加载了memcache服务。开启这个选项。内存是不怎么吃了。但系统负载仍旧保持在30,并发数一高,就会导致WEB服务当掉。 至此,BBS上线计划彻底失败。 这两天我一直在研究VBB的缓存机制。发现了VBB结构上的不合理性。可能这个问题在一般中小性站点不会遇到。但我们的论坛就会遇到。 介绍一下,我的论坛的情况吧。 一台WEB服务器 高性能 4U 的服务器,配置就不说了,4颗CPU,8G内存 一台数据库服务器 配置和WEB一样。CPU频率要比WEB高一点 forum 有 700个 都是在用的版 thread 有 60W条记录 post 有 500W条记录 附件我是存的文件。并且我的web挂了一个光阵列 可以说,我的硬件环境是比较优越的。 接下来,我们开始分析造成系统负载大的原因。找来找去,硬件上没有任何问题。 也询问了VBB的技术支持。 通过分析,得到的结论就是问题出在VBB程序中,而且正是它的程序结构设计上的缺陷。 VBB的cache机制没有考虑的很周到。 看过VBB程序的人,大家可以想想,我已经给出了我的状况,看看你们分析出来是什么原因。 我很想和大家探讨。 关于VBB CACHE上存在的问题,我可以解释的再详细一点。但我还不知道如何修改。 如果真的是CACHE上的问题,那么我的改动会非常巨大。 我的联系方式 : qq:8165839 msn:[email protected]