重要性能指标参考:
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和工具分享,敬请期待