前言
在此前的文章中,已经针对cephfs进行过I/O性能压力测试:
cephfs调优 & 性能测试 & 监控 & 常用命令
在上一篇文章中,完成了k8s 对接ceph rbd的测试:
k8s(十二)、分布式存储Ceph RBD使用
测试发现cephfs的小文件读写性能一般,且写入延迟偏高,性能不甚满意,但是满足于日常应用环境的读写是没有问题的,但是在面对数据库的应用场景,是否能满足性能要求呢?本篇主要结合kubernetes,针对数据库应用场景,对cephfs 和 ceph rbd这两种ceph存储接口来进行性能对比测试.
在对比之前,再贴一下k8s对于cephfs和cephrbd的接入模式的支持:
Ceph RBD调优
在测试之前,首先对ceph rbd进行针对性的配置优化
ceph.conf:
[client]
rbd cache size = 268435456 #默认32M
rbd cache max dirty = 134217728 #最大未落盘脏数据大小,默认16M,此值小于cache size
rbd cache max dirty age = 5 #最大未落盘脏数据存放时间,默认1,单位s
rbd cache max dirty object = 64 #最大未落盘脏数据对象数量,默认object大小为4M,因此建议值为rbd cache max dirty / 4
#osd段增加线程数,默认为1,不要过大,防止线程锁
[osd]
rbd op threads = 4
配置完成后逐个重启ceph节点
测试工具
1.sysbench
项目地址:
akopytov/sysbench
sysbench是跨平台的基准测试工具,使用预定义或自定义的lua脚本灵活地进行性能测试,支持多线程,支持多种数据库;主要包括以下几种方面的性能:
cpu性能
磁盘io性能
调度程序性能
内存分配及传输速度
POSIX线程性能
数据库性能(OLTP基准测试)
使用参考:
https://www.cnblogs.com/kismetv/archive/2017/09/30/7615738.html
本文将进行数据库 事务/非事务 只读(查询)/混合读写基准性能测试。
2.TPCC
TPC-C是专门针对联机交易处理系统(OLTP系统)的规范
Tpcc-mysql由percona根据tpcc规范实现以订单为中心的多表联表操作性能测试,更贴切于业务场景.
工具内置业务场景模拟逻辑图:
使用参考:
https://www.cnblogs.com/Aiapple/p/5705146.html
测试
为方便部署,全部使用容器测试,容器运行起来后本质即是一组进程,cpu/内存/磁盘 性能损耗可以说比虚拟化还小,因此可以排除性能损耗的干扰
配置规格:
内存: 64G
CPU: E5-2683 v4 *2
网卡: 10GE
存储介质分为4种场景:
1.机械硬盘 raid5
2. 16 * ssd raid 5
3. cephfs(ssd)
4. ceph rbd(ssd)
测试方法可参考上方链接中的文章,这里直接贴结果:
结果分析:
- ssd raid性能毫无疑问是最好的
- ceph rbd 数据库qps/tps可达ssd raid的60%-70%,
- cephfs因为写入延迟不稳定的原因,压测过程中极小比例的操作响应时间非常漫长,导致qps/tps值整体表现不佳
- hdd测试得到的qps/tps值中规中矩,操作最低响应时间较其他三者要高,但最高响应时间值也不会很高.然而机械硬盘介质决定了随着它的负载增高寻址时间会随之加长,性能将会呈线性下降.
适用场景讨论
Cephfs:
优点:
1.读取延迟低,I/O带宽表现良好,尤其是block size较大一些的文件
2.灵活度高,支持k8s的所有接入模式
缺点:
1.写入延迟相对较高且延迟时间不稳定
适用场景:
适用于要求灵活度高(支持k8s多节点挂载特性),对I/O延迟不甚敏感的文件读写操作,以及非海量的小文件存储支持.例如作为常用的应用/中间件挂载存储后端.
Ceph RBD:
优点:
1.I/O带宽表现良好
2.读写延迟都很低
3.支持镜像快照,镜像转储
缺点:
1.不支持多节点挂载
适用场景:
对I/O带宽和延迟要求都较高,且无多个节点同时读写数据需求的应用,例如数据库.
欢迎补充