事务启动以后,批量向事务Transaction的一个putList的尾部写入,putlist是一个LinkedBlockingDeque .

事务提交的时候, 把putlist中的event批量移除, 转移到Channel的一个LinkedBlockingDeque 里面来.

而SinkRunner则启动PollingRunner , 也通过定时启动任务,调用SinkProcessor,最后调用Sink的process方法,这个方法也负责启动一个事务 ,批量从Channel的LinkedBlockingDeque中拉取event , 写入takelist ,批量做完的put操作以后,做Transaction的事务提交操作

flume在一个事务中有putlist 和 takelist,而他们俩的类型都是LinkedBlockingDeque类型,而TransactionCapacity控制的就是这个双端队列的长度

一一一一一一一一一一一一一一一一一一一一一一一一一

而上诉问题的产生是因为我观察到一次性有非常大大大量的event的在一瞬间产生了(因为用的是httpsource,可能是网络延迟balabala什么的原因,大家可能很难遇见我这种情况)然后紧随而来出现了这个问题!

so!那么很明显了,是因为putList的容量不足直接被塞满了!

那么控制putlist的是TransactionCapacity,

so,我将TransactionCapacity调整为了50000(目前还在观察中)

但这种并不能完美的解决问题,因为你保不准下次一次性来的event大小会不会超过这个值!无限增加也是个愚蠢的举动,所以将sink改为多线程消费才是明智之举,这才是最根本的解决之道,提高下游的处理能力,例如换成strom

最新文章

  1. [Kerberos] Kerberos 认证过程整理
  2. Dictionary<k,v>键值对的使用
  3. Play Framework介绍:控制器层
  4. python黑帽子源码
  5. Linux安装Flash player
  6. MAC OSX 下安装Cscope
  7. 强制不使用“兼容性视图”的HTML代码(转)
  8. JS判断字符串是否为空、过滤空格、查找字符串位置等函数集
  9. MVC 包命名规范
  10. C# 运行时序列化
  11. 从Linux启动过程到android启动过程
  12. hdu 5382 GCD?LCM! - 莫比乌斯反演
  13. [转载]Juicer – 一个Javascript模板引擎的实现和优化
  14. [转]IOS下如何判断机器是否越狱
  15. 《Python》 文件操作
  16. 1864. [ZJOI2006]三色二叉树【树形DP】
  17. RedisClient的安装及基本使用
  18. Knowledge Point 20180308 拔下forEach的外衣
  19. 3个IO口8个按键
  20. JAVA判断一个字符串里面有没有汉字

热门文章

  1. 适用于 Windows 的虚拟机扩展和功能
  2. C/S结构软件测试要点汇总
  3. Android启动外部应用的方法
  4. August 16th 2017 Week 33rd Wednesday
  5. C#预定义类型、引用类型
  6. angularJs中的模块化操作
  7. 【[TJOI2017]异或和】
  8. 【php】获取ip
  9. Git--查看,删除,添加远程分支
  10. 【题解】洛谷P1966 [NOIP2013TG] 火柴排队(树状数组+逆序对)