Drupal的性能测试
这两天对Drupal做了非常简单的性能测试,过程如下:
被压力对象:Drupal6.16,刚刚安装,无任何node和只有一个admin用户。
被压力页面:无cookie的首页
被测试机器:HP DL140 G2, 2 x Xeon 2.80GHz, 2GB 四核2G内存,算起来还不错。
被测试系统:Linux Redhat 4u7 apache 2.2.11 mysql 4.1.22
压力方式:从另外一台机器开进程压力,所以压力程序不占被测试机性能。
压力测试数据:
- 情况1:Apache,无apc,没有打开缓存
- 100线程压力情况:
- QPS:13左右
- RT:6900毫秒左右,居然达到了惊人了6秒钟。
- CPU:99.6%,几乎占满
- Mem:33%
- 5线程压力情况:
- QPS:13左右
- RT:359毫秒左右
- CPU:99.6%,几乎占满
- Mem:33%
- 1线程压力情况:
- QPS:13左右
- RT:359毫秒左右
- CPU:99.6%,几乎占满
- Mem:33%
- 100线程压力情况:
- 情况2:Apache,有apc,没有打开缓存:
- 100线程压力情况:
- QPS:55左右
- RT:1700毫秒左右,将近一秒钟的响应时间,非常慢。
- CPU:99.8%
- Mem:35%
- 10线程压力情况:
- QPS:55左右
- RT:178毫秒左右,QPS虽然差不多,但是响应时间提升明显。
- CPU:99.8%
- Mem:30%
- 5线程压力情况:
- QPS:55左右
- RT:89毫秒左右,响应时间继续减少。
- CPU:98.7%,也有响应的下降
- Mem:35%
- 3线程压力情况:
- QPS:48左右
- RT:61毫秒左右,看来是非满负荷时候的正常响应时间,还不错。
- CPU:73%
- Mem:30%
- 100线程压力情况:
- 情况3:Apache,有apc,打开页面缓存到Normal情况
- 100线程压力情况:
- QPS:399左右
- RT:238毫秒左右,也不太快,可能也是并发太多的原因。
- CPU:98%
- Mem:30%
- 10线程压力情况:
- QPS:403左右
- RT:23毫秒左右,并发快了很多很多,缓存有作用了。
- CPU:98%
- Mem:35%
- 5线程压力情况:
- QPS:380左右
- RT:12毫秒左右,在低负载的情况下,12ms的响应时间很不错了。
- CPU:89%
- Mem:16%
- 100线程压力情况:
值得注意的是,在情况3的情况下,mysql启动占用了一个cpu的资源,而其他情况,mysql的占用资源并不多。可以看出缓存放在内存中的问题。
注意:这次性能测试并没有针对模块,而只是空Drupal的情况,所以这次测试只是简单的Drupal本身测试,而且并没有js和图片等静态文件的调用,并不能作为实际网站的数据,不过数据是可以参考的。
结论:从这里可以看到Drupal无缓存情况下的性能的确是个问题,会导致登录用户的问题。但是因为数据库的cpu占比并不是很高,加上Drupal本身的可扩展性,可以轻松扩展到多台Web服务器,以服务器换取开发时间是很值得的做法。
在有缓存的情况下,300多的QPS和20ms的RT基本上可以满足日常网站的要求。
建议网站打开缓存和APC,以增加性能。
计算:如果使用这样的服务器进行服务,加上APC和缓存,Drupal的用户访问80%是匿名用户的话,可以支撑差不多300每秒的访问,如果加上css和js和image的话,差不多可以接受每秒50个页面请求。按照经验值来说50个页面请求乘以50000为一个可以服务的人数:250万。也就是说,空的Drupal在一台机器上可以支持250w的PV。
优化:如果加上更多的优化模块,分几台服务器部署,并且剥离静态文件的话,内容不多的情况下,Drupal应该可以支撑上千万PV的网站。
今后做一下更详尽的多内容的性能测试。
- circleoflife's blog
- 要发表评论,请先登录 或 注册
标签云
感谢您关注我的个人博客!
为了您的更好的阅读和留言,建议您注册用户,这样您可以获得更大的权限,以及更方便的留言。
注册只需要一分钟的时间。但是您需要提供您的邮箱。注册后,密码会自动发到您的邮箱,请在第一次登录时修改。
我承诺不会将您的Email泄露给他人,或者发送垃圾邮件。