背景:
1. 建立1个tracker
2. 建立2个storage(0.23,0.26)
性能测试
1. 上传 100 个 7M 文件,统计耗时,重复多次
结论:
a. Mogilefs自带的 mogstored稳定性不佳,在持续上传10个文件后会崩溃,替换为nginx之后,保持稳定
b. 测试数据:
total upload:100
time spend:114.306327105
多次上传结果表示大文件平均处理速度大概是 1文件/s
2. 上传 10,000个 600k 文件,统计耗时,重复多次
结论:
a. Mogilefs自带的 mogstored稳定性不佳,在持续上传10个文件后会崩溃,替换为nginx之后,保持稳定
b. 测试数据:
total upload:1000
time spend:150.214337111
多次反复测试的结果表示小文件处理速度大概是10文件/s,大概5MB/s
3. 连续下载 100-1000 次不同文件,统计耗时,重复多次
结论:
a. 测试数据:
total get:100 * 7M
time spend:64.9994878769
total get:1000 *700k
time spend:95.6649990082
多次反复测试的结果表示下载速度大概10MB/s,基本能吃满百兆带宽
4. 随机测试上传、下载
结论:
a. 稳定性的主要瓶颈是存储节点;
b. 6个并发持续测试时,大概会有1/20概率出现上传、下载失败的情况;
容错测试:
1. 测试一个storage节点崩溃时的表现
a) 早期在使用mogstored时,由于程序不稳定,会经常崩溃,实际上等于模拟了一个节点崩溃的情况;
b) 如果程序上传时恰好使用了崩溃的节点,会导致上传失败;
c) 没有使用到崩溃节点的程序能正常上传;
2. 节点恢复后的数据容错表现
a) 崩溃节点恢复后,可以观察到数据从有效节点持续复制到崩溃节点上,直至数据复制完毕
3. 新增节点表现
a) 如果配置时,设置数据复制分数为2份,则新增节点只会分布新增的部分数据;
b) 当强制将旧的某个device标志为dead状态时,会观察到数据持续被复制到新增节点,直至数据复制完毕
总体测试结论:
1. 考虑到测试机的性能和带宽,估算运营环境下可以支持 5文件/s的上传速度,下载可以支持10MB/s的峰值速度;
2. 以上数据可以支持大概每天5w个单式方案的规模;
3. 容错能力较高,没有单点问题
4. 进程所耗内存资源与文件存储量无关;
5. Mogstored替换为nginx之后,会丧失对文件系统的监控能力,需要用第三方监控替代;
遗留待确认问题:
1. 数据库中存储的文件数量与实际文件系统数量有不一致情况,需要了解怎么产生的;
2. 不同节点之间会有文件数量差异(相差的文件在数据库中不存在),需要了解怎么产生的;