云梯1跨机房测试整体解决方案

简介:
阅读本文前建议先阅读云梯跨机房方案介绍,了解云梯跨机房项目背景,难点以及解决方案。本文重点介绍下跨机房 测试的整体解决方案
   功能测试
   测试用例管理:http://kelude.taobao.net/testsuites?project_id=12202
  数据安全性测试
  数据安全简单的说就是不能丢数据,跨机房后集群规模到达近万台,数据存储到达数百PB,如何确保数据安全是一个很大的挑战
  在跨机房的情况下,我们通过(Sange、Slive、DFSIO)模拟线上比例的各种混合性操作,通过NN的FSCK, CN的 CrossCheck工具定位异常数据如CORRUPT,一直处于BEING WRITTEN无法关闭的文件,跨机房失败的文件
  数据安全性测试里需要考虑的一种重要场景是NN和DN重启,在实际的升级过程中,在集群重启前各业务线并没有停止读写数据,重启后数据的一致性和可恢复性非常重要;在实际的跨机房测试中我们曾发现一个因为重启后状态不一致导致无法加载EDITLOG从而使NN无法启动的BUG,如果这种问题发生到线上,后果不堪设想
   性能测试
  性能测试的关键点是如何建立性能基准,对线上性能进行准确评估,跨机房测试性能基准工具主要包括:
  DFSIO:  HDFS  I/O(读写) 性能基准
  Slive: 主要模拟线上各种RPC,在每个TASK发起混合型RPC操作,并可以指定文件和block大小,该工具可以同时测试NN和DN的性能;
  Sange:  主要模拟线上各种RPC操作压力,在每个TASK启动大量Thread进行混合性RPC操作 ,对NN产生压力,进而评估NN RPC 处理能力;SANGE工具不能指定文件和Block大小,会产生大量小文件,比SLIVE对NN可以产生更大的RPC压力
  Terasort:MapReduce 数据排序能力基准
  Gridmix :Gridmix和Rumen结合可以模拟和生产作业相应的负载,更真实的模拟生产环境
  SmallJobBench:通过创建大量sleep job到不同group来测试jobtracker性能
  SubmitJobBench:通过每个map启动(-nThreads)个线程,每个线程顺序提交(-nTasks)个作业, 每个线程有自己的独立账号,来模拟线上多账号并行度2K情况下JTProxy性能
   跨机房性能主要对比场景:
  主要针对上述场景进行性能对比和评估包括NN带宽,内存,CPU load, NN RPC 指标, NN 各个operation的吞吐量(opsper second)和平均执行时间, NN同步editlog性能指标,跨机房带宽流量,跨机房复制速率,跨机房副本删除速率,CROSSFSCK时间
  跨机房测试还有很重要的一点是要保证计算一定优先从本机房读数据,除非本机房没有数据才会跨机房读;实际测试中TERASORT跨机房读对比本机房读性能会有32%左右的下降,而且对带宽也是很大的浪费。

 重要性能指标参考:
1.   cpu_user
2.   cpu_wio
3.   mem_free
4.   bytes_in
5.   bytes_out
6.   load_five
7.   total-iops
8.   total-ReadBytes
9.   total-WriteBytes
10.  dfs.namenode.Syncs_avg_time
11.  dfs.namenode.Syncs_num_ops
12.  dfs.namenode.Transactions_num_ops
13.  rpc.metrics.RpcProcessingTime_avg_time
14.  rpc.metrics.RpcQueueTime_avg_time
15.  rpc.metrics.RpcProcessingTime_num_ops
16.  rpc.metrics.delayedCallsQueueLen
17.  rpc.metrics.RpcQueueTime_num_ops
18.  rpc.metrics.addBlock_num_ops
19.  rpc.metrics.append_num_ops
20.  rpc.metrics.create_num_ops
21.  rpc.metrics.delete_num_ops
22.  rpc.metrics.getFileInfo_num_ops
23.  rpc.metrics.getListing_num_ops
24.  rpc.metrics.listCorruptFileBlocks_num_ops
25.  rpc.metrics.mkdirs_num_ops
26.  rpc.metrics.rename_num_ops
27.  rpc.metrics.RpcProcessingTime_num_ops
28.  rpc.metrics.RpcQueueTime_num_ops
29.  rpc.metrics.blockReport_num_ops
30.  rpc.metrics.blockReceivedAndDeleted_num_ops
31.  rpc.metrics.sendHeartbeat_num_ops
32.  rpc.metrics.rollEditLog_num_ops
33.  rpc.metrics.getBlockLocationsHA_num_ops
34.  rpc.metrics.getBlockLocations_num_ops
   压力测试
  压力测试和性能测试关系紧密,压力测试更侧重于在线上最大压力的情况下系统是否可以正常工作,性能测试则侧重于新上线的版本是否有性能下降问题,主要是基于基准进行性能对比
  压力测试比较难的一点是如何在小规模的测试集群模拟线上真实的压力,基本思路是     启动MR程序, 每个Task启动多个Thread,在每个thread进行大量模拟操作,NN和DN压力测试我们可以用到SANGE和Slive,JTPROXY压力测试可以用到SubmitJobBench,JT压力测试可以用到SmallJobBench和GurgleClient(TaskTracker模拟器)
  跨机房压力测试主要是评估crossnode的自身压力和crossnode对namenode、datanode的压力影响;crossnode对namenode压力主要体现在RPC的请求,对datanode的压力目前主要体现在带宽和磁盘上
  数据准备:利用SLIVE工具产生跟线上一样数量的Block和文件数
   跨机房压力主要场景:
   稳定性测试
  构建BI仿真实验室,模拟整个云梯跨机房项目变更流程,运行BI线一日的作业,查看作业运行情况和做数据产出对比,验证跨机房后数据的正确性和业务线运行时间是否受影响
   总结
  整个项目过程中,测试人员共发现有效bug 100多个,其中5个bug严重影响性能,10个bug可能导致丢数据,4个bug会导致服务不可用
  本文主要是跨机房的测试整体介绍,整个跨机房测试是一个非常复杂的过程,可能大家觉得不是很过瘾,后续会进行跨机房测试经典BUG和工具分享,敬请期待


最新内容请见作者的GitHub页:http://qaseven.github.io/


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
Java 测试技术 容器
SpringBoot单元测试报空指针异常解决方案
java.lang.NullPointerException空指针异常 1.测试类中产生空指针异常,可能不是你的逻辑代码写错了,而是因为获取容器失败,即没有使用正确的测试方法 2.在SpringBoot项目中我们一般可以使用两种Junit进行测试,在导入@Test包时,会出现两个选项
SpringBoot单元测试报空指针异常解决方案
|
11月前
|
数据采集 机器学习/深度学习 编解码
MMdetection框架速成系列 第02部分:整体算法流程+模型搭建流程+detection训练与测试核心组件+训练部分与测试部分的核心算法
众所周知,目标检测算法比较复杂,细节比较多,难以复现,而我们推出的 MMDetection 开源框架则希望解决上述问题。目前 MMdetection 已经复现了大部分主流和前沿模型,例如 Faster R-CNN 系列、Mask R-CNN 系列、YOLO 系列和比较新的 DETR 等等,模型库非常丰富,star 接近 13k,在学术研究和工业落地中应用非常广泛。
1062 0
|
30天前
|
存储 安全 算法
光伏逆变器在环测试解决方案
本文介绍了光伏行业的背景及其在全球清洁能源发展中的重要性,随着技术进步,光伏组件成本下降,效率提升,分布式系统普及,储能技术的应用解决了光伏发电的不稳定性。光伏变流器的入网检测至关重要,涉及并网检测、电气参数、动态响应、防电击保护和电网保护功能等方面。EasyGo提供的基于CPU+FPGA的HIL实时仿真器用于光伏变流器的半实物仿真测试,支持拓扑结构研究、工况测试、电能质量验证和控制算法验证。文中还提到了基于PXIBox 5442的储能变流器实时仿真方案及相关的测试内容,如频率扰动、高/低电压穿越、孤岛预防和电能质量测试等。
20 3
|
3月前
解决方案测试重要吗?
解决方案测试重要吗?
|
6月前
|
运维 Kubernetes jenkins
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
【Kubernetes测试生产环境整体部署及全链路测试、自动化运维平台Jenkins与Devops环境搭建】
221 0
|
9月前
|
PHP Windows
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
192 0
|
9月前
|
JavaScript 数据库连接 PHP
php部署服务器后本地测试正常的页面顶部出现空白的(&#65279 BOM头)解决方案
php部署服务器后本地测试正常的页面顶部出现空白的(&#65279 BOM头)解决方案
65 0
|
9月前
|
SQL 关系型数据库 MySQL
环境部署:一文测试mysql大文件导入到数据库常见问题及解决方案
环境部署:一文测试mysql大文件导入到数据库常见问题及解决方案
86 0
|
11月前
|
机器学习/深度学习 人工智能 数据挖掘
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)(下)
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)(上)
【人工智能】45测试深度学习基础知识的数据科学家的问题(以及解决方案)