由ttl引发的responseTooSlow
来源:互联网 发布:java semaphore 实现 编辑:程序博客网 时间:2024/06/01 20:33
前段时间业务反应数据查询速度慢,大批量的数据出现查询时间超过多少多少秒。看了下io,发现io一直都很高,基本上很多都达到了400M/s。有点可以飙到600M/s。然后在日志出现了很多responseTooSlow的现象。但是问题是,数据量却没有很明显的增长。于是,我们初步判定是由于io的原因。
在这个hdfs上,有两个hbase实例,每个实例都有一个业务应用。
1.初步缓解
为了初步解决这个io问题,我们进行了扩容,在原有的60台rs的基础上,又扩充了12台rs。扩充完成后,io有所下降,但没有从根本解决问题。
2.找到根本原因以及最终解决
在一系列分析后,我们感觉问题可能出在另一个应用上。于是,我们开始查看另一个应用上的实例,包括日志等等。无意中发现,另一个应用的日志中,出现了大量的compact日志,统计发现,平均3s一次,而且还有排队现象。这个时候我们就断定io那么大的现象是由于compact导致的,一直在读写文件。
那么问题又来了,为什么现在会有那么多的compact呢,为什么会引起那么大的io呢?
这个时候我们又去研究了,发现表的ttl时间已经到了。那会不会是ttl时间到了,后台major compact已经在开始删除数据了,导致有如此多的io了呢?所以我们进行了一下两点修改:
a.调整compact有关的参数,具体为
hbase.hstore.compaction.kv.max 10>200
hbase.hstore.compaction.min 3>6
hbase.hstore.compactionThreshold 3>6
hbase.hstore.compaction.max.size 9223372036854775807>5368709120
hbase.regionserver.thread.compaction.large 5>10
hbase.hstore.blockingStoreFiles 7>20
hbase.hregion.max.filesize 10737418240>21474836480
hbase.master.initializationmonitor.timeout 1200000>3600000
b.去掉ttl
其实我们是先做了第一步,compact从原来的3s一次改成了20s一次。情况又有所好转。后来为了从根本解决问题又做了b步骤。然后经过一段时间的观察,发现情况彻底好了。业务侧反应查询正常了。
3.分析
对于这一现象,我在网上搜了下,发现也有人和我的情况是一样的。
http://blog.csdn.net/vbaspdelphi/article/details/55655459
在一些大神的帮助下,我知道了,原来minor compact也会删除数据,他会删除ttl过期的数据。
如果表设置了ttl,那么当某条数据ttl时间到了,会给该数据产生一个tombstone(墓碑)标识。在minor compact的时候,它会删除这些ttl过期的数据,但不会删除tombstone标识。这个tombstone标识只有在major compact的时候才会删除。
- 由ttl引发的responseTooSlow
- 由fastlock引发的...
- 由Typedef引发的问题
- 由InvocationTargetException引发的思考
- 由UseSubmitBehavior引发的问题
- 由BigDecimal引发的思考
- 由static引发的问题
- 由地理位置引发的应用
- 由IsPostBack引发的思考
- 由mmap引发的SIGBUS
- 由AppendMenu()引发的错误
- 由mmap引发的SIGBUS
- 由InvocationTargetException引发的思考
- 由GATHER_STATS_JOB引发的堵塞
- 由mmap引发的SIGBUS
- 由Thread.sleep引发的
- 由typedef引发的故事
- 由程序引发的反思
- 我是怎样爬下6万共享单车数据并进行分析的(附代码)
- 程序编译过程
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 121. Best Time to Buy and Sell Stock
- 张长水主任当选2018年IEEE Fellow!中国大陆17位当选者清华占了5位 !(附完整名单)
- 由ttl引发的responseTooSlow
- boost库之asio使用出错:error LNK2001,boost::system::generic_category
- 模糊查询
- 进程管理API之find_pid_ns
- KMP模板
- 微软为什么要公开AI系统测试数据集和度量指标?
- TypeScript学习(4)-迭代器
- MVC请求服务
- 升级到Android Studio 3.0出现 aapt2错误