集群搭建完成简要测试集群(性能)带宽与IOPS
集群搭建好之后网络,raid卡策略,磁盘都会影响集群的性能。为了避免因上述问题使得集群的性能受到影响,我们依次进行测试,最后得到基本的集群性能。
网络
首先是网络,ceph集群一大堆让人摸不着头脑的问题都出在网络上,所以我们在建立集群之前就可以测试网络,看其是否有问题,可以通过ping命令来测试网络的连通性,但最好使用iperf,测试下网络传输速度。
遇到有不少现场情况,因为光模块导致万兆网络只有百兆的速度,如果等集群建好之后性能不如意,花费大量时间排查发现是这个问题就太冤了。
iperf命令
选择一个节点作为iperf server
iperf -s
选择其他节点作为iperf client,比如server IP地址为192.168.12.4
iperf -c 192.168.12.4 -i 1 -t 5
# -i: 间隔多少秒报告一次结果
# -t: 向服务器发送多少秒
# 结果如下
[ 3] 0.0- 1.0 sec 575 MBytes 4.83 Gbits/sec
[ 3] 1.0- 2.0 sec 361 MBytes 3.03 Gbits/sec
[ 3] 2.0- 3.0 sec 618 MBytes 5.18 Gbits/sec
[ 3] 3.0- 4.0 sec 423 MBytes 3.55 Gbits/sec
[ 3] 4.0- 5.0 sec 519 MBytes 4.35 Gbits/sec
[ 3] 0.0- 5.0 sec 2.44 GBytes 4.19 Gbits/sec
# 最后一行为 0-5秒的平均速度
iperf -c 192.168.12.4 -i 1 -t 10 |awk '/sec/ {print $8,9}'
一般ceph的内部通信网络是万兆网络,那通过iperf测试的速度为8-9Gbits/sec为正常,一次测试每个节点,没问题后接下来检查raid卡cache策略
raid卡cache策略
基于megacli的raid相关操作可参考我的《Raid操作与坏盘诊断》
总之,如果有BBU,设置raid cache为No Write Cache if Bad BBU
# 查看是否存在BBU
/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll
# 设置为No Write Cache if Bad BBU,即BBU损坏或learning时变为Write Through
/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -NoCachedBadBBU -Immediate -Lall -aAll
测试带宽与IOPS
带宽和IOPS测试的时候要同时使用atop来看当前测试压力的瓶颈在哪里,以三节点集群为例,通常使用两台节点同时往集群写入数据就可以测出最大性能,但是如果硬件设备配置很高,这时候atop观察发现两台同时给压力集群还是没有满负荷跑,可以使用三个节点同时压:
通常带宽使用1M的数据块来顺序写测试,IOPS使用4K小文件随机写来测试
带宽测试的瓶颈往往在万兆网卡上,atop命令可以看到万兆卡被压红
IOPS的瓶颈往往在磁盘上,atop可以看到不同节点的磁盘轮番被压红,或者同时压红则正常。如果发现有一个节点始终没有太大的变化,就需要去排查分析是否有问题
注意无论是dd命令还是fio命令,都不要对系统盘写,尤其是直接对系统块设备写,会直接抹掉系统数据。
带宽
以集群提供的NAS文件夹为例,如果为3节点集群,可以利用其中两个节点向同一文件夹同时写入,最后将结果相加
以顺序写为例:
进入nas目录里(同时写入的两个节点of文件名取不同的,否则测试结果偏高),同时从两个节点写数据,带宽为1.7GB/s(两个节点测试结果之和)


dd命令
# 测nas文件夹写速率
dd if=/dev/zero of=dd.client1 bs=1M count=40960 conv=fsync
# of:要写到哪个文件
# bs:同时设置读入/输出的数据块大小为1M
# count:共复制多少个bs 此处:bs=1M count=40960,则一共写入40G数据
# conv=fsync:在完成dd命令前需要确保文件的data和metadata都flush到后端存储,如果不加这个选项,可能还没写到存储上,只存在于客户端的memory里就结束了,这样的结果会偏高。
IOPS测试
一般使用fio工具来测试IOPS,fio也可以测试带宽。
- 测试IOPS一般使用4K的数据块
- 测试带宽建议使用大于等于1M的数据块
我们使用集群提供的块服务(iscsi),如块名为rbd0
下图为同时从两个节点向/dev/rbd0写如数据的IOPS测试结果,同理,将两个IOPS的值相加即粗略得到集群的IOPS,记得上面说到的用atop查看三个节点的磁盘状态,最直观的就是是否压红


fio命令
# 测rbd IOPS
fio --name=randwrite --rw=randwrite --bs=4k --size=100G --runtime=120 --ioengine=libaio --iodepth=128 --numjobs=1 --filename=/dev/rbd0 --direct=1 --norandommap --randrepeat=0 --group_reporting
--name=randwrite # Job的名称,命令行模式下的必填项,如果没有指定filename,那么将会根据这个name来生成filename
--rw=randwrite # IO pattern的类型,允许的值包括: read/write/randwrite/randread/rw/randrw,具体意义可以直接从字面看出来
--bs=4k # 每次IO的块大小,默认是4k,如果是带宽测试,建议至少1m
--size=100G # 文件大小,fio将会传输完整个文件大小,除非设置了运行时间runtime
--runtime=120 # 本次fio测试最多会运行这么长时间,和size共同决定fio运行的时间
--ioengine=libaio # 定义了job如何发送IO请求,本质上对应了不同的系统IO函数调用,常见的有sync/psync/libaio,新版本还有直接针对ceph的rbd
--iodepth=128 # IO深度,即同一时刻在途的IO个数,这个参数只在ioengine是异步的时候有用,如果是sync/psync,那么不管设多少只能是1
--numjobs=1 # Job的个数,即多进程运行fio,如果同时给出thread表示多线程运行
--filename=/dev/rbd0 # 如果指定filename,那么所有的job都会读写这个file,否则会根据name和numjobs启动生成file
--direct=1 # 如果是1,表示使用non-buffered IO,即读写均不经过本地内存
--norandommap # fio测试时会维护一张表来记着写过的地方,默认不会重复的写一块地方,添加此选项,会在任何块随机写,这样更接近业务情景。一般在随机读写的时候加这个参数
--randrepeat=0 # 设置产生的随机数是不可重复的,目的是增加读写的随机性
--group_reporting # 如果有多个job,不加这个参数就会单独显示每个job的输出,有这个参数就会汇总显示
# 测NAS带宽
fio --name=seqwrite --rw=write --bs=1M --size=5G --runtime=1200 --numjobs=20 --ioengine=libaio --iodepth=16 --direct=1 --group_reporting
总结
以上简单的测试只是根据经验交付完的临时测试,机房的环境与客户现场是相当复杂的,通常环境也不是很好,但是搭建好集群后还是稍微坚持下花点时间进行简单的测试。
即便客户没有问到相关问题,但这样做首先是负责,其次将测试结果记录在案,方便后面自己与同事的维护工作。
集群搭建完成简要测试集群(性能)带宽与IOPS的更多相关文章
- mongodb 3.4 集群搭建:分片+副本集
mongodb是最常用的nodql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- Redis集群搭建,伪分布式集群,即一台服务器6个redis节点
Redis集群搭建,伪分布式集群,即一台服务器6个redis节点 一.Redis Cluster(Redis集群)简介 集群搭建需要的环境 二.搭建集群 2.1Redis的安装 2.2搭建6台redi ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 【转】【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
原文地址:http://www.cnblogs.com/baiboy/p/orc9.html 阅读目录 目录 检查RAC状态 检查创建的数据库 全部参考文献 相关文章 Oracle 11G RAC ...
- mongodb 3.6 集群搭建:分片+副本集
mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...
- Zookeeper 集群搭建--单机伪分布式集群
一. zk集群,主从节点,心跳机制(选举模式) 二.Zookeeper集群搭建注意点 1.配置数据文件 myid 1/2/3 对应 server.1/2/3 2.通过./zkCli.sh -serve ...
- Redis5以上版本伪集群搭建(高可用集群模式)
redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地 ...
- 斯坦福大学公开课机器学习:advice for applying machine learning | model selection and training/validation/test sets(模型选择以及训练集、交叉验证集和测试集的概念)
怎样选用正确的特征构造学习算法或者如何选择学习算法中的正则化参数lambda?这些问题我们称之为模型选择问题. 在对于这一问题的讨论中,我们不仅将数据分为:训练集和测试集,而是将数据分为三个数据组:也 ...
- Redis3.2.5 集群搭建以及Spring-boot测试
1:集群中的机器信息 IP PORT 192.168.3.10 7000,7001,7002 192.168.3.11 7004,7005,7006 2:安装Redis 分别在10与11机器上面安装R ...
随机推荐
- 第八届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.平方十位数 题目描述 由0~9这10个数字不重复.不遗漏,可以组成很多10位数字. 这其中也有很多恰好是平方数(是某个数的平方). 比 ...
- java实现矩阵变换加密法
一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1.首先按行填入密钥串 ...
- java实现第六届蓝桥杯显示二叉树
显示二叉树 题目描述 排序二叉树的特征是: 某个节点的左子树的所有节点值都不大于本节点值. 某个节点的右子树的所有节点值都不小于本节点值. 为了能形象地观察二叉树的建立过程,小明写了一段程序来显示出二 ...
- java实现第八届蓝桥杯树型显示
树型显示 题目描述 对于分类结构可以用树形来形象地表示.比如:文件系统就是典型的例子. 树中的结点具有父子关系.我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关 ...
- Java实现第八届蓝桥杯拉马车
拉马车 题目描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的 ...
- java实现第五届蓝桥杯斐波那契
斐波那契 标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 ...
- 使用macaca抓页面元素,执行命令后报安装失败处理Error: Command failed: ……pm install -r "/data/local/tmp/com.macaca.android.testing"
最近换了小米手机做自动化测试,执行命令的时候报安装失败错误,错误如下 解决:设置小米允许USB安装就好了 pm install -r "/data/local/tmp/com.macaca. ...
- 小波学ItDay01--开始学习Servlet
曾经想过许多的开场白,有热血的,有励志的,最后思前想后还是用这句话开篇吧! 生活不会亏待每一个愿意努力的人-------<摘自某微信群的语录> 今天第一天,结合自己的进度开始学习Servl ...
- 记一次Docker中Redis连接暴增的问题排查
周六生产服务器出现redis服务器不可用状态,错误信息为: 状态不可用,等待后台检查程序恢复方可使用.Unexpected end of stream; expected type 'Status' ...
- WinForm通用自动更新AutoUpdater项目实战
目前我们做的上位机项目还是以Winform为主,在实际应用过程中,可能还会出现一些细节的修改.对于这种情况,如果上位机带有自动更新功能,我们只需要将更新后的应用程序打包放在指定的路径下,可以让用户自己 ...