【转载】Storm TickTuple 意外停止
原文链接转自:http://woodding2008.iteye.com/blog/2328114
Storm的滑动窗口TickTuple通常用来控制bolt定制执行入库操作,使用过程中遇到了TickTuple“意外停止”的情况。
场景描述
Jiaodian任务共计使用12个worker,tick tuple间隔为5分钟。
WebPvLogSpout & WebPvLogBolt的executor数量为12.
WebPvLogSpout消费kafka topic,log_product_ypvlog共计10个partition
6月14号下午启动,次日凌晨1点35分之后,有2个bolt就收不到tick tuple。
生产tickTuple消息的线程【user-timer】由于disruptor的原因,一直处于挂起状态。
- "user-timer" daemon prio=10 tid=0x00007f8ea8ac7000 nid=0x353c runnable [0x00007f8e29662000]
- java.lang.Thread.State: TIMED_WAITING (parking)【处于挂起状态,一致等待信号激活自己,正常情况应该处于sleeping状态】
- at sun.misc.Unsafe.park(Native Method)
- at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:349)
- at com.lmax.disruptor.AbstractMultithreadedClaimStrategy.waitForFreeSlotAt(AbstractMultithreadedClaimStrategy.java:99)
- at com.lmax.disruptor.AbstractMultithreadedClaimStrategy.incrementAndGet(AbstractMultithreadedClaimStrategy.java:49)
- at com.lmax.disruptor.Sequencer.next(Sequencer.java:127)
- at backtype.storm.utils.DisruptorQueue.publishDirect(DisruptorQueue.java:174)
- at backtype.storm.utils.DisruptorQueue.publish(DisruptorQueue.java:167)
- at backtype.storm.disruptor$publish.invoke(disruptor.clj:66)
- at backtype.storm.disruptor$publish.invoke(disruptor.clj:68)
- at backtype.storm.daemon.executor$setup_ticks_BANG_$fn__6510.invoke(executor.clj:315)
- at backtype.storm.timer$schedule_recurring$this__1807.invoke(timer.clj:99)
- at backtype.storm.timer$mk_timer$fn__1790$fn__1791.invoke(timer.clj:50)
- at backtype.storm.timer$mk_timer$fn__1790.invoke(timer.clj:42)
- at clojure.lang.AFn.run(AFn.java:24)
- at java.lang.Thread.run(Thread.java:745)

问题分析
包装后的kafka客户端会让分配不到partition的spout一直阻塞[ArrayBlockingQueue.take()]
user-timer多个小时的jstack信息,都是TIMED_WAITING (parking),其他worker的状态是sleeping。
spout几个小时一直阻塞,由于spout接收队列会被metrics and system stream塞满,一直得不到处理,会导致TickTuple消息无法放入到队列,这就导致了user-timer线程一直挂起,等待被唤醒。
解决方案
将spout的数量设置为kafka topic的partition相等的数量,实际上是不让spout长时间的处于阻塞状态。
官网issues
【转载】Storm TickTuple 意外停止的更多相关文章
- MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin \'FEDERATED\' is disabled”
MYSQL启动报1067错误,系统日志中是"服务 mysql 意外停止" Mysql日志中则是:"Plugin \'FEDERATED\' is disabled&quo ...
- Plugin 'FEDERATED' is disabled 或 1067错误 启动错误与“服务 mysql 意外停止”解决方法
MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin 'FEDERATED' is disabled” 网我在网上找到解决方案:1.在MY.I ...
- mysql 服务意外停止1067错误解决办法小结
今天在配置服务器时安装mysql5.5总是无法安装,查看日志错误提示为1067错误,下面来看我的解决办法 事件类型: 错误 事件来源: Service Control Manager 事件种类: 无 ...
- redis服务意外停止
本地windows的redis一直好的,今天突然项目报错无法连接,不得解 看了下日志, [4824] 04 Mar 11:15:45.714 # Accepting client connection ...
- 转-"进程android.process.acore已意外停止" 解决办法
运行手机虚拟机时,老是弹出这样的“android.process.acore“服务已意外停止,虽不影响正常使用,但终究影响心情.网上找的方案,按如下步骤操作,可以解决问题: 出现这个提示不用担心,并不 ...
- wamp mysql服务意外停止
出现问题: MySQL启动一段时间之后,意外停止.可以再次启动,但是过不了多久又自动停止了. 发现问题: 查看错误日志,发现以下问题: 解决方案: 网上网友分享以下操作: 1.删除data文件夹里面的 ...
- MySQL服务意外停止
先说一下,发现MySQL服务停了,启动就又好了,但是好奇服务意外停止的原因,所以看了一下MySQL的错误日志. 但是到底是哪个错误导致MySQL服务意外终止,还没有定论,故有了此篇文章,还望知道原因的 ...
- PHP 后台定时循环刷新某个页面 屏蔽apache意外停止
PHP 后台定时循环刷新某个页面 如果间隔时间过长的话 会出现apache自动停止的现象.出现的原因则是设置了 <IfModule mpm_winnt_module> ThreadsPe ...
- ETL kettle 数据调取防止意外停止处理
pentaho kettle是目前使用比较广泛的一种etl工具 但是在使用的时候如做定时任务 会存在如果任务异常停止会发生数据不准或者丢失数据的情况 这种情况在<Pentho Kettle So ...
随机推荐
- Python使用re实现计算器
re 正则表达式 计算器 海瑞博客-学习python之路•2016-12-01•Python• 59•0•A+ A- re是一门小型语言 元字符 . 通配符除了\n ^ 以什么开始的 ...
- Python的面向对象2
我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...
- 重构技巧 引入Null对象
描述:有两个类,学生类和导师类,学生的导师类可能不存在,因此在获取学生导师名字等信息时都要先判断导师名字是否为空.重构后通过一个空导师类来处理导师为空的相应逻辑. Before # introduce ...
- Vim粘贴代码时缩进混乱
Vim粘贴代码时缩进混乱 via 背景 在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加.原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内 ...
- WPF窗体禁用最大化按钮
禁用WPF窗体的最大化按钮可以使用Windows API改变按钮状态的方法实现.使用GetWindowLong可以得到当前按钮的状态.使用SetWindowLong可以设置按钮的状态.使用SetWin ...
- C#winform程序安装时自动卸载新版本覆盖旧版本
vs2005为winform程序做的安装包.在以有程序旧版本的机子上用新版本的安装包安装软件时提示 “以经安装该产品的另一个版本.无法继续安装此版本........” 在安装部署项目中设“Remov ...
- Things About 'extern'
Note: All Learned From Here C和Objective-C的function前面都有个隐含的extern,对于function来说,有没有extern都无所谓,但变量不一样. ...
- POJ 3267 The Cow Lexicon 简单DP
题目链接: http://poj.org/problem?id=3267 从后往前遍历,dp[i]表示第i个字符到最后一个字符删除的字符个数. 状态转移方程为: dp[i] = dp[i+1] + 1 ...
- 10 个 jQuery 的无限滚动的插件:
很多社交网站都使用了一些新技术来提高用户体验,而无限滚动的翻页技术就是其中一项,当你页面滑到列表底部时候无需点击就自动加载更多的内容. 下面为你推荐 10 个 jQuery 的无限滚动的插件: 1. ...
- Metasploit介绍
Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估, 提供真正的安全风险情报.这些功能包括智能开发,密码审计 ...