[转帖]minio性能测试
https://zhangzhuo.ltd/articles/2021/09/08/1631106274550.html
压测参数说明
- 压测数据量为:2个backet,每个backet为10000对象。每个对象大小512kb
- 所有minio服务内核以及资源优化都相同
- 整体读写压测时间为10分,读写比例为读写各占百分之50
- 一共4台压测客户端,每个客户端4个读写进程,整体16个读写线程。
- 所有测试都经过多次验证
#所有服务器内核优化
https://gitlab.gridsum.com/TechnologySharingCenter/back-end/research/-/issues/18#%E8%84%9A%E6%9C%AC
minio服务器数据磁盘性能
多次测试

一、单机测试数据
1.1 单机单个数据盘
单块数据盘并不实现纠删码功能,即数据盘故障minio就无法正常工作,数据存储空间比例为1:1
minio服务器规格4C 16G

| 操作类型 | 操作数 | 操作产生的数据 | 操作的平均时间 | 吞吐量 | 速率 |
|---|---|---|---|---|---|
| read | 154.74kops | 79.23G | 11.41ms | 258.24op/s | 132.22MB/s |
| write | 155.01kops | 79.36G | 43.12ms | 258.69op/s | 132.45MB/s |
内存使用情况最高值

- used(776M)
- memory buffers(2M)
- memory cached(9.802G)
CPU负载最高值

- 1m load average(11.70)
- 5m load average(9.96)
- 15m load average(5.30)
1.2 单机多个数据盘
minio服务器规格4C 16G,挂载4个数据盘作为minio的存储,用来实现纠删码功能,数据存储空间比例为1:2
由于测试环境所有数据盘都使用一块盘,性能测试并不标准,正常情况下所有数据盘都为独立的个体。

| 操作类型 | 操作数 | 操作产生的数据 | 操作的平均时间 | 吞吐量 | 速率 |
|---|---|---|---|---|---|
| read | 35.28 kops | 18.06G | 34.09ms | 58.81op/s | 30.11MB/s |
| write | 35.14 kops | 17.99G | 230.51ms | 58.59op/s | 30MB/s |
内存使用量峰值

- used(1.82G)
- memory buffers(164KB)
- memory cached(12.43G)
CPU负载峰值

- 1m load average(33.63)
- 5m load average(27.39)
- 15m load average(15.64)
1.3 单机压测总结
- 单机多块数据盘相比单机一块数据盘读写性能直线下降,下降比例符合1/4,体现了一块磁盘做四个数据盘读写竞争得到的最终结果。
- 多块数据盘实现了纠删码功能但对内存以及cpu的需求更大,具体数值比例由于一块数据盘测试时磁盘写入速度太低导致cpu等待读写时间过长导致cpu负载比实际环境中的值要高出许多所以这里无法进准确测试。
- 不建立使用同一块硬盘实现minio的多个数据目录会极大的降低读写性能
- 预计使用多块硬盘组成minio的数据盘会极大的提升minio的读写性能(环境有限无法验证)
二、集群测试数据
minio服务器规格4C 16G,一共四台每台四个数据目录
nginx代理服务器 4C 16G,nginx版本1.20.1,不使用https

| 操作类型 | 操作数 | 操作产生的数据 | 操作的平均时间 | 吞吐量 | 速率 |
|---|---|---|---|---|---|
| read | 46 kops | 23.55G | 45.53ms | 76.68op/s | 39.26MB/s |
| write | 45.85 kops | 23.48G | 144.89ms | 76.43op/s | 39.13MB/s |
各minio服务节点内存使用量峰值
minio1

- used(1.39G)
- memory buffers(164KB)
- memory cached(10.41G)
minio2

- used(1.33G)
- memory buffers(2M)
- memory cached(10.27G)
minio3

- used(1.28G)
- memory buffers(2M)
- memory cached(10.02G)
minio4

- used(1.36G)
- memory buffers(2M)
- memory cached(9.53G)
各minio服务节点cpu负载峰值
minio1

- 1m load average(6.740)
- 5m load average(5.26)
- 15m load average(3.75)
minio2

- 1m load average(6.770)
- 5m load average(4.970)
- 15m load average(3.70)
minio3

- 1m load average(5.170)
- 5m load average(3.850)
- 15m load average(2.90)
minio4

- 1m load average(6.300)
- 5m load average(5.120)
- 15m load average(3.800)
三、各压测数据总汇
读写总和
| 压测类型 | 操作数 | 操作产生的数据 | 操作的平均时间 | 吞吐量 | 速率 | 内存使用总计 | cpu负载15分 |
|---|---|---|---|---|---|---|---|
| 单机单数据盘 | 309.75kops | 158.59G | 54.53ms | 516.93op/s | 264.67MB/s | 10.56G | 5.30 |
| 单机多数据盘(4个数据盘) | 70.42kops | 36.05G | 264.6ms | 117.4op/s | 60.11MB/s | 14.25G | 15.64 |
| 集群多数据盘(4台minio服务器,每台4个数据盘) | 91.85kops | 47.03G | 190.42ms | 153.11op/s | 78.39MB/s | 11.39G | 3.53 |
性能测试总结描述
- 由于所有数据盘都在一个物理磁盘上面,这里读写性能仅能做比对,无法提供优化的具体数据参考
- 单机单数据盘由于无删码功能,所以cpu使用率比较低,单机只要开启纠删码功能(多数据盘自动开启)对cpu性能要求是比较高的
- 这里单机单数据盘与集群多数据盘内存使用差距并不大,反而是单机多数据盘内存使用比较高,这里可能的原因为cpu负载过高导致(待验证),cpu负载最可能的原因是磁盘速率影响导致cpu在长时间等待io操作的结果(待验证)
- 这里读写性能最好的是单机单数据盘,最主要的原因就是所有数据盘底层都是一个物理磁盘导致,如果底层是真实的独立的磁盘单机多数据盘与集群多数据盘的性能会极大的提升(具体提升比例待验证)
- 这里非常有意思的是单机多数据盘与集群多数据盘的性能是集群多数据盘的性能要比单机多数据盘要好一些,按照一个磁盘来说单机多数据盘的速率是60M由于底层是一个磁盘他有四个数据目录,4*60=240是与单机的速率是非常接近的,但是集群多数据盘是4个节点每个节点4个数据盘4*4=16一共是16个数据目录,正常情况下一个磁盘被分为16个目录同时读写他的速率应该是1/16,可是集群的读写速率达到了78.39。原因:由于前面使用的是nginx代理,所有的访问请求是通过nginx以轮询的方式转发到后端minio服务器,所以严格来说所有节点并不是同时读写磁盘,由于集群模式是多个minio节点同时处理请求,这也就导致了所有的节点都分担了一部分任务,从而cpu负载极大的降低,cpu可以极快的处理请求。
- 网络的测试数据并不准确,由于都是在一个主机上不同虚拟机测试,并不提供数据,但是在分布式环境中数据同步会极大的消耗网络带宽,所以网络也是分布式环境中一个重要指标(无法测试)
性能排行
集群多数据盘 > 单机多数据盘 > 单机单数据盘
minio对性能要求依赖
- 最重要的就是磁盘io性能,如果磁盘io性能较低会极大的影响cpu以及内存的性能
- cpu性能最大的影响因素是是否使用多块磁盘或使用minio集群功能开启纠删码功能,纠删码会非常依赖cpu性能
- 内存利用率,minio程序真实的内存使用率并不高,大多数内存使用都是内存缓存使用(即minio写入的数据应该是先写入缓存在写入硬盘),所以如果磁盘io性能不行会极大的影响内存使用率从而降低性能
重要性:磁盘io > cpu/内存
- 集群环境如果磁盘io不是瓶颈,就要检查是否是网络带宽不够导致集群读写性能不够,处理方法把客户端访问入口与集群通信入口的网卡分开物理设置区分(即集群通信一个网段,客户端访问一个网段),避免集群同步数据与客户端访问数据竞争网络带宽。
四、总结
- 任何存储服务,如果大规模使用并对性能以及容量有要求,都要进行物理环境的提前规划以及软件环境的性能验证
- 生产环境如果性能的要求比较高,建议采用物理服务器以及物理磁盘进行部署,并且根据自己需求选配物理硬件,不建立使用虚拟化技术以及虚拟磁盘,如果是存储服务器也要提前进行性能评估
- 集群环境首先考虑的是集群读写性能,以及集群网络带宽(集群模式网络是非常重要的)
- 存储服务如果依赖文件系统可以查看官方文档是否支持(btrfs文件系统),可以考虑使用会极大的提升性能,但是这个文件系统并没有在发行版的linux系统中大规模使用,一些功能也在实验阶段,并不稳定,所以可以根据自己需求选择
[转帖]minio性能测试的更多相关文章
- [转帖]Linux性能测试 pmap命令
Linux性能测试 pmap命令 https://www.cnblogs.com/txw1958/archive/2012/07/26/linux-pmap.html 名称: pmap - ...
- [转帖]Docker五种存储驱动原理及应用场景和性能测试对比
Docker五种存储驱动原理及应用场景和性能测试对比 来源:http://dockone.io/article/1513 作者: 陈爱珍 布道师@七牛云 Docker最开始采用AUFS作为文件系统 ...
- 【转帖】sysbench的安装和做性能测试
iMySQL | 老叶茶馆 sysbench的安装和做性能测试 http://imysql.cn/node/312 我仿照这个学的 但是 需要用更新的版本才可以. By yejr on 14 六月 ...
- 性能测试知多少---系统架构分析 转自https://yq.aliyun.com/articles/35147?spm=5176.100239.blogcont24251.8.lS96At
摘要: 有些事儿一旦放一放就难再拾起来,突然发现<性能测试知多少>这个系列两月没更新,关键时我都不知道啥时候放下的,总容易被各种技术所吸引走,如饥似渴的想学更多的东西,这几天一直有朋友问我 ...
- Firefly 性能测试 报告
原地址:http://bbs.gameres.com/thread_223724.html Firefly 性能测试 主要考虑点 网络IO的并发 进程间通信压力 数据读写压力 测试机配置: 操作系统 ...
- JMeter性能测试中控制业务比例
性能测试混合场景中,我们需要组合多个业务操作到场景中来.比如有一个论坛的业务分布如下:发布新帖与回复帖子的比例为2:3,那么我们在JMeter测试计划中如何控制其比例呢? 可以通过以下两种方式解决:多 ...
- web性能测试
在公司Confluence上看到一篇好文,原链接已不能访问.先收藏 转帖自:http://blog.csdn.net/wxq8102/article/details/1735726 1.1基本概念并发 ...
- [ZZ] [精彩盘点] TesterHome 社区 2018年 度精华帖
原文地址: https://testerhome.com/topics/17646 相逢即是缘分,总有一篇适合您! 感觉好的请点赞收藏 ,感觉分类不严谨的,欢迎反馈给我! 测试方法&测试管理 ...
- [转帖]NUMA架构的CPU -- 你真的用好了么?
NUMA架构的CPU -- 你真的用好了么? 本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于 ...
- loadrunner 性能测试报error-27796的解决
网上观点: 在注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters里,有如下两个键值:TcpTimedWai ...
随机推荐
- MyBatis 批量更新的处理
一般来讲,在使用 MyBatis 进行数据库的访问时,通常会遇到需要更新数据的相关业务,在某些业务场景下,如果需要进行一批次的数据更新,可能性能不是特别理想.本文将简要介绍几种能够高效地处理批量更新数 ...
- 40. 干货系列从零用Rust编写负载均衡及代理,websocket的实现
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- Spring源码学习笔记7——Spring bean的初始化
一丶前言 上篇中我们了解了Spring bean的实例化--存在方法覆盖的使用CGLIB动态代理生成子类,反之反射调用构造函数.实例化后bean中的字段都是默认值,接下来就是对bean的属性进行填充, ...
- MySQL篇:第四章_详解DML语言
DML语言 插入 一.方式一 语法: insert into 表名(字段名,...) values(值1,...); 特点: 1.字段类型和值类型一致或兼容,而且一一对应 2.可以为空的字段,可以不用 ...
- Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算
摘要:本文主要介绍图像形态学处理,详细讲解了图像开运算.闭运算和梯度运算.数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图 ...
- CodeLab:一款让你体验丝滑般的云化JupyterLab
摘要:从AI开发特点着手,华为云AI DTSE技术布道师陈阳在DTT第五期带来主题为<云化JupyterLab:华为云CodeLab介绍>技术分享. DTSE Tech Talk是华为云开 ...
- 云图说|ASM灰度发布,让服务发布变得更敏捷、更安全
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:通常产品优化迭代的 ...
- JS引擎(1):JS引擎擂台赛,JavaScript引擎的特征比较及术语科普
上篇介绍过JavaScript引擎的历史,<JS引擎(0):起底各种JavaScript引擎群雄争霸之路> 一些流行的 JavaScript 引擎 SpiderMonkey ,Brenda ...
- iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤
目录 iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤 摘要 引言 一.APP加固的概念 二.APP加固方案的比较 三.保护iOS应用的安全 四.总结 参考资料 摘要 本文介绍了移动应 ...
- 莉莉丝游戏与火山引擎 ByteHouse 达成合作,为实时数仓建设提速
中国头部游戏公司莉莉丝游戏(Lilith Games)和火山引擎 ByteHouse 达成合作,共同致力于加速莉莉丝游戏的实时数仓建设.此次合作将利用 ByteHouse 的创新技术和功能,为莉莉丝的 ...