IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> DN gc影响hbase查询性能 -> 正文阅读

[大数据]DN gc影响hbase查询性能

对opentsdb业务进行迁移,迁移到新集群之后,查询每天有200多次的timeout,时间超过10秒,检查日志看了一下ResponsetooSlow的processtime,一般在10-40秒之间。由于迁移之前没有这个问题,而且新集群之前的业务也没有问题,因此需要调查到底发生什么问题导致查询timeout.

经过对新集群老业务的梳理,以前的架构采用了redis作为缓存,如果redis没有数据才去opentsdb直接查询数据。经过与开发沟通,让他们去对老业务也做压测,不使用redis,看是否会出现timeout,测试结果是不管新业务还是老业务,在新集群如果没有使用redis都会出现timeout.

由此可以基本判断,新集群应该是哪里有问题,因为老集群没有使用redis,直接访问opentsdb并没有这个问题。

分析:

1. 老集群使用的sas盘,新集群使用的是sata盘,从磁盘性能来看,sas盘肯定比sata盘快,最开始怀疑不是不是因为磁盘不同,导致性能不行。

2. 联系开发进行压测,对磁盘io等进行监控,发现磁盘io还好,高的使用率也是40%,低的一半就0-20之间,读写也就100m/s,低的就几m几十m。 所以觉得磁盘应该不是主要问题,先放一边。

3. 查询region server的日志,发现responsetooslow日志大概30分钟左右出现一次,这个时间和opentsdb timeout的时间是一致的.

到此为此基本可以判断,opentsdb出现timeout的时候,的确是因为那个时间点region server比较慢,但是问题是,timeout并不是断断续续出现,而是30分钟左右出现一次。这么有规律的timeout是为什么?

4. 检查region server的监控,包括gc, jvm内存使用等,从肉眼看,看不出什么问题,至少从监控图没有发现什么特别的异常。

5. region server打印了2种日志,一种是resonsetooslow,另外一个是FSWal slow sync的日志,因此对dn的监控也进行了查看,发现dn gc有明显的特点,每天有4根柱子,6小时发生一次,也就是那4次gc时间较长。对比timeout时间,发现时间完全吻合。

到现在基本可以基本认为,dn gc的时间点就是查询timeout的时间点。那么什么原因导致dn gc时间长呢? 查询老集群的dn gc没有发现这个问题。

为了进一步确认dn gc的确和timeout有关系,让开发继续压测,打开dn gc监控图,可以百分百确定,只要dn在gc,就出现timeout。

按照原理,dn每6个小时会向nn汇报block,难道是因为block数量太多,导致上报的时间拉长,进而出现gc? 通过nn webui查看block数量,数字是2700w左右,对比老集群的400w block引起了我的注意,检查新集群为什么block数量会如此之多,毕竟业务差不多,不应该有如此大的差距。最后发现是之前flink读kafka落地到hdfs很多小文件,大概有2700w多,删除那些小文件,最后的block数量只有87000个。

等待将近12个小时,也就是2轮dn汇报之后,dn的gc正常了。 这里解释一下为什么要等待将近12个小时,因为dn每6小时汇报一次,删除block之后,要等下一轮汇报结束才会正常。由于dn汇报时间并不是同时的,那么多dn要汇报完整体肯定要超过6个小时。

这里提示一下,修改jvm的-XX:SurvivorRatio=3参数也是ok的,这么做的原因是减少新生代的大小,让他能尽快移走,而不是导致积累大量数据至少再移走而增加gc的时间。简而言之,就是让他ygc频率增加,但是每次gc时间很短,这样在dn汇报的时候不会造成一次性大量内存占用,而影响ygc时间.

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:11:43  更:2022-06-25 18:11:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:24:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码