前言

在此前的文章中,已经针对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

  1. 16 * ssd raid 5
  2. cephfs(ssd)
  3. ceph rbd(ssd)

测试方法可参考上方链接中的文章,这里直接贴结果: 在这里插入图片描述

结果分析:

  1. ssd raid性能毫无疑问是最好的
  2. ceph rbd 数据库qps/tps可达ssd raid的60%-70%,
  3. cephfs因为写入延迟不稳定的原因,压测过程中极小比例的操作响应时间非常漫长,导致qps/tps值整体表现不佳
  4. 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带宽和延迟要求都较高,且无多个节点同时读写数据需求的应用,例如数据库.

欢迎补充

results matching ""

    No results matching ""