- 论坛徽章:
- 0
|
原帖由 iammecn 于 2006-4-21 11:31 发表
如果我一台双至强服务器,架设discuz论坛.
Freebsd6系统,apache和mysql都使用默认设置。
apache默认设置是260进程同时.
www.discuz.net的官方网站,每处理一个页面的时间大约在0.01秒。
那么可不可以这样计算:
260进程,每个进程处理一个页面需要0.01秒,那么一秒钟内,260个进程就是处理:一个进程一秒处理100个页面,即100个请求。那么260个进程就是处理260*100=26000个请求?一秒种就能处理26000个,那么30分钟就是26000*60*30=46800000个请求。
一般论坛也就是在线按30分钟计算:那么理论上一台服务器可以支持4680万人在线?
LZ, 首先假设你确实是有疑问而不是在寻开心。根据我们以往的经验,一台中端的服务器至多支持2000人左右在线的论坛,因而你的结论“一台服务器可以支持4680万人在线”是不可想像的。
在你推导出这一骇人听闻的结论的过程中有三处考虑不周:
1、在单处理机系统中,260个进程在微观上是以串行的方式运行的
2、你计算在线用户的方法有错误,一个在线的用户在30分钟内提出的请求通常是远超过1次的
3、即使真的存在一台处理能力超强的服务器,它也要受到带宽的制约
1、在单处理机系统中,260个进程在微观上是以串行的方式运行的。在分时系统中, 操作系统把CPU时间分割成较短的时间片,按时间片轮流把处理机分给这260个进程使用CPU。以LINUX为例,LINUX系统把1秒钟分割成100份,即时间片大小为0.01秒,假如不考虑进程切换的开销的话,在这1秒钟的时间里:
- 在第1个时间片运行第1号进程0.01秒,处理第1个请求
- 在第2个时间片运行第2号进程0.01秒,处理第2个请求
- ...
- 在第100个时间片运行第100号进程0.01秒,处理第100个请求
因此我们得出结论:
- 在1秒中,260个进程中只有100个进程有机会使用CPU一小段时间(0.01秒)
- 在1秒中,处理的请求的数目是100个而不是100*260=26000个
2、此外,你计算在线用户的方法有错误。假如服务器1秒可以处理100个请求,按照你的计算方法,这台服务器能够支持的在线人数是100*60*30=180000=18万人,虽然没有4680万那么BT,但也是相当离谱的一个数字。我们看看国内最大的社区天涯的在线人数统计:
在线人数:85285 其中会员:6044(为了吸引广告商,这个数字可能还有水分)
这么来说,理论上tianya使用一台服务器就应该就绰绰有余了。你的错误在于忽略了这样一点:一个在线的用户在30分钟内提出的请求通常是远超过1次的,还是以chinaunix.net为例,把有争论的热帖从头到尾翻一遍需要向服务器提多次请求。下面我们做个计算:
- 假设平均每个在线用户在1分钟内浏览1次论坛的页面,这和论坛的类型相关,如果是图片站、美女站,用户活跃程度要高的多。
- 对于一台每秒钟可以处理100个请求的服务器来说,1分钟内能处理的请求的总数目为1*60*100=6000个,即这台服务器能支持的在线人数的数目就是6000
3、最后,即使真的存在一台处理能力超强的服务器,它也要受到带宽的制约。现在中低端服务器的带宽保证也就是10MBPS,注意是10M BIT每秒而不是10M BYTE每秒,还得除个8,也就是服务器每秒最多传输1250K字节,做个计算
- 假设平均每个在线用户在1分钟内浏览1次论坛的页面,每次需要服务器传输10K字节
- 一分钟内,这台服务器能够传输的字节总数为1250K*60=75000K,即最多服务75000K/10K=7500个用户。
[ 本帖最后由 missjiang 于 2007-5-15 02:15 编辑 ] |
|