Skip to content

Commit

Permalink
buaazp: Added v2.0 benchmark report.
Browse files Browse the repository at this point in the history
  • Loading branch information
buaazp committed Apr 28, 2014
1 parent 38aeccd commit 556ae92
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 4 deletions.
13 changes: 9 additions & 4 deletions doc/Distributed_Image_Storage_Server_zimg.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,15 @@ Beansdb和SSDB不仅分别代表了memcached协议和Redis协议,也代表了
> ````
> stress也还在开发中,后续增加更多好用的功能。
测试在一台服务器上进行,由于图片服务是一种读请求远远大于写请求的特殊存储服务,我的测试就只进行高并发读取,测试结果如下图所示:
【第一次简陋的测试】测试在一台服务器上进行,由于图片服务是一种读请求远远大于写请求的特殊存储服务,我的测试就只进行高并发读取,测试结果如下图所示:
![zimg_storage_mode_test](http://ww1.sinaimg.cn/large/4c422e03tw1efpkuhy2p0j20or0jmwg6.jpg)
测试结果显示,本地存储性能最好,SSDB略优于beansdb,但差别微乎其微,考虑到他们各有自己的优点,我最终的决定是:
【第二次测试】由于第一次测试样本太小,毕竟选择后端这样重要的事情需要慎重,于是我又进行了一次更加详细的测试,这次测试光是ab执行次数就达到了330次之多,整理统计这些数据都花费了相当长的时间。测试详细情况见[测试报告](http://blog.buaa.us/?p=224),此处只贴出关键数据图:
![qps](http://ww1.sinaimg.cn/large/4c422e03tw1efvtggyr4pj216k0vitec.jpg)
根据上述测试结果显示,本地存储性能最好,SSDB略优于beansdb,但差别微乎其微,考虑到他们各有自己的优点,于是我最终决定:
**zimg同时支持beansdb和SSDB**。
同时支持多种存储模式的另一个优点是适用性广,因为同时支持了memcached协议和Redis协议,你可以采用其他任何用得顺手的存储后端,比如[Memcachedb](http://memcachedb.org/)、甚至是Redis本身,**以及谁能知道将来会不会又出来其他更加优秀的NoSQL数据库呢**。
直接存取磁盘的模式也没有移除,方便那些只想用一台起了zimg的单机做图片服务器的朋友们。
Expand Down Expand Up @@ -78,10 +82,11 @@ New Features:
- 将图片处理的逻辑往lua脚本中转移,这样可以使zimg在无需重新编译甚至无需重启的情况下改变图片处理规则,或者增加新规则,用户也可以自定义自己的处理逻辑,满足不同的需求。
- 大家可能已经有所耳闻,我们公司这边有自己开发的图片处理库webimg,性能好于imagemagick,而且不会内存泄露,使用起来也极其方便(webimg库支持c和PHP,最近我又给它增加了lua和go接口),一直有人呼吁开源出来给大家使用,我当然也非常希望,但这是公司的东西,可能需要老大们做决定。如果一旦webimg开源,zimg将果断抛弃imagemagick转向它。
- 还有一个是老问题了,zimg处理上传的逻辑写得非常搓,又笨又简陋,需要改进。
- 还有一个是老问题了,zimg处理上传的逻辑写得非常搓,又笨又简陋,已经修复的BUG中有好几个与它相关,需要改进。
- 完善工具和文档,看着别人做的开源项目(比如SSDB)这也有那也有,感觉非常高端大气上档次,只能慢慢补充吧。
然后有人向我咨询zimg的license问题,问我是否可以商业化,答案是可以的,希望大家随便用随便改,如果你的公司或者APP采用了zimg,希望在此处留言告知,或者发邮件通知我一声,邮箱是````[email protected]````。
开源项目zimg是我利用业余时间无偿完成的,很多个深夜都在写代码中度过,作者并不指望靠它获利,只是诚惶诚恐。如果使用它可以给你带来一点便利,我已非常满足。
开源项目zimg是我利用业余时间无偿完成的,很多个深夜都在写代码中度过,作者并不指望靠它获利,只是诚惶诚恐。如果使用它可以给你带来一点便利,我已非常满足。
大家五一假期快乐!
35 changes: 35 additions & 0 deletions doc/benchmark_of_zimg_v2_storage_backends.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## benchmark of zimg v2 storage backends

这个测试是为了检验zimg采用不同存储后端时读取数据时的性能差异,以便根据测试数据选择最佳的存储方案。

#### 测试方案

提前向三种存储后端(本地磁盘、beansdb和SSDB)中存入测试图片,zimg分别以不同的模式启动并进行测试。测试工具为ab(httpd v2.2.24自带)。为了避免测试工具对测试对象的影响,ab位于测试机A中,zimg及其存储后端位于测试机B中,AB位于同一机房中。
测试分别在并发10~1000水平下进行,每种模式在每个并发水平下测试11次,每次发送20000个请求,记录每次测试的QPS和单请求平均完成时间。
为了避免误差带来的影响,手工摘除掉11此测试中结果最差的一次,然后取剩余10次的平均值,以代表该模式在对应并发水平下的处理能力。

#### 测试机

测试机为中等配置的服务器:

````
CPU: Intel(R) Xeon(R) CPU E5-2620 @ 2.00GHz, 12 Cores
Memory: 32GB
OS: CentOS release 5.8
Disk:
buffered disk reads: 156.39 MB/sec
cached reads: 11024.11 MB/sec
zimg: version 2.0.0 Beta
````

#### 测试结果

在所有并发水平下local disk模式都优于其他两种存储后端,beansdb和SSDB相差不大,这主要是因为zimg的处理能力还远远达不到其二者的理论极限(beansdb可达到24428,SSDB更是到了夸张的55541),所以成了水桶效应中的短板。
以下所有测试结果都是限定zimg请求响应时间在300ms以内级别,更高的并发水平下请求响应时间变长,已经脱离了现实意义。
测试结果如下图所示,原始数据链接在最后。

![qps](http://ww1.sinaimg.cn/large/4c422e03tw1efvtggyr4pj216k0vitec.jpg)

![time](http://ww2.sinaimg.cn/large/4c422e03tw1efvtgg1xsfj216k0vm77f.jpg)

[测试结果详细数据](http://ww4.sinaimg.cn/large/4c422e03tw1efvtzen5soj216v32gkjl.jpg)
Binary file added test/zimg storage test result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified test/zimg storage test result.xlsx
Binary file not shown.

0 comments on commit 556ae92

Please sign in to comment.