情况3:Apache,有apc,打开页面缓存到Normal情况
o 100线程压力情况:
* QPS:399左右
* RT:238毫秒左右,也不太快,可能也是并发太多的原因。
* CPU:98%
* Mem:30%
o 10线程压力情况:
* QPS:403左右
* RT:23毫秒左右,并发快了很多很多,缓存有作用了。
* CPU:98%
* Mem:35%
o 5线程压力情况:
* QPS:380左右
* RT:12毫秒左右,在低负载的情况下,12ms的响应时间很不错了。
* CPU:89%
* Mem:16%
值得注意的是,在情况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的网站。(以上言论仅代表作者的个人观点,不代表51Testing观点)