[转帖]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 ...
随机推荐
- Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战) 导入pom依赖 编写导出模板 @ApiOperation("导出xxx模板") @ ...
- Mybatis 源码2——SqlSession,执行器和一级缓存
一丶 SqlSessionFactoryBuilder,SqlSessionFactory,sqlSession mybatis 获取sqlSession是通过SqlSessionFactory获取的 ...
- 共探AI大模型时代下的挑战与机遇,华为云HCDE与大模型专家面对面
摘要:近日,华为开发者大会2023(cloud)"开发者生态创新发展圆桌会议"在东莞华为溪流背坡村成功举办. 2023年7月8日,华为开发者大会2023(cloud)"开 ...
- 如何在跨平台的环境中创建可以跨平台的后台服务,它就是 Worker Service。
一.简介 最近,有一个项目要使用 Windows 服务,来做为一个软件项目的载体.我想了想,都已经到了跨平台的时代了,会不会有替换 Windows 服务的技术出现呢?于是,在网络上疯狂的搜索了一番,真 ...
- why哥这里有一道Dubbo高频面试题,请查收。
这是why的第 64 篇原创文章 荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 64 篇.老规矩,先荒腔走板聊聊其他的. 上面这图是我之前拼的一个拼图. 我经常玩拼图,我大概拼了 ...
- 收到一封CTO来信,邀约面试机器学习工程师
大家好,我是北海 很少登陆 Gmail,前天收验证码登了一下,发现居然收到一封某初创公司CTO的来信. 我在Github上看到了您的资料觉得很有意思,请问您是否考虑我们公司的全职工作机会呢?可供考虑的 ...
- 升讯威周报与工时统计系统 V3
欢迎使用"升讯威周报与工时统计系统"本系统是一款适合各类型企业.机构.团队使用的周报填写.查询:工时上报.统计分析的软件. 本系统主要特点: 员工按周填写周报,录入工时:可区分项目 ...
- ME5A报表增强
一.ME5A报表新增长文本字段 结构中添加字段 在该方法下添加对应的取值逻辑 二.ME5A点击科目分配按钮界面添加字段 结构中添加字段 对应位置写取值逻辑 定期更文,欢迎关注 TRANSLATE wi ...
- VS2019 快速实现 C# 连接 MySQL 数据库并实现基本操作代码
一.工具: Visual Studio 2019 MySQL 数据库 二.添加动态链接: Visual Studio 中选择项目-> 管理NuGet程序包(N) -> 然后在浏览里面搜索 ...
- AISing Programming Contest 2021(AtCoder Beginner Contest 202) 简单题解记录
补题链接:Here A - Three Dice 水题,问给定三次摇色子的正面,请问3次结果以后相对面的点数和 cout << (21 - a - b - c) << &quo ...