Hbase+Elastic Job架构 线上程序问题:(Asyn

2020-08-28  本文已影响0人  _3d7e

问题:

线上程序在运行一段时间偶尔会报(AsyncRequestFutureImpl.java:1196)- #1, waiting for 148 actions to finish on table: monitor:entry_table

分析

  1. 首先我们是知道线上环境CDH的配置弱鸡,网络的带宽和稳定性也是一言难尽(网络经常有波动,带宽也小)。
  2. 结合hbase运行日志和图表初步认为报这个的原因是当hbase并发量过高,并且在网络波动时程序对hbase请求超时,同时引发了程序大量资源得不到释放导致了OOM(OOM具体原因还在深入分析)。hbase并发过高是因为Elastic Job设置的所有作业执行时间(core表达式)是都为5分钟,15分钟,20分钟(诸如此类5的倍数)执行时间间隔,由此导致了在整点时会有一次爆发式的hbase请求,当hbase响应不及时的时候程序容易发生OOM。

解决方法

  1. 减少程序的最大线程数
  2. 修改Elastic Job的作业触发时间间隔无序,尽量使得作业(特别时复杂作业)错开执行

结果

修改后程序稳定运行,观察hbase的请求曲线也趋于稳定

参考

hbase 错误调用表读方法引发的血案

上一篇 下一篇

猜你喜欢

热点阅读