`

Storm 重启排查(续)

阅读更多

此文主要接 storm worker异常重启原因排查汇总 这篇文章继续描述。上文中的第三点大概描述了一下造成重启的原因,这次又有一次详细的排查过程和思路供参考。

 

 

一、背景

今天,另一个同事反应,我们的一个任务在早上4点到10点之间会有严重的数据丢失,而这个时间点与一个数据导入任务的时间点是吻合的,经查看此任务的的数据量有将近5亿。因此,在这段时间内造成的影响还是挺大的,毕竟都是线上数据。

因此,又重新启动此任务,可以观察到,数据丢失率确实增高,因此,就查看各个woker的状态如何,发现了有一台机器woker重启,开始了这个问题的排查过程。

(注:此结果还无法反馈数据丢失的具体原因,仅仅是针对woker重启的现象排查过程进行记录)

 

二、排查过程

1、是否有明显异常

这个问题的排查请参考storm worker异常重启原因排查汇总 中的1和2两点。经查看,可以知道不是这两种原因导致的。

 

2、开启打怪模式

(1) 首先查看supervisor的日志文件,发现重启的原因是由于心跳timeout。

heartbeat

但是supervisor检测worker的心跳,是在本机的一个心跳文件检测的,不涉及到网络的问题,因此,就开始怀疑是本物理机有问题。

 

(2) 查看机器的各个指标

首先查看机器的整体监控,可以看到该机器的CPU整理利用率 80%, 内存整体利用率88%,CPU的负载持续很高,并且不稳定,见下图:

CPU负载

 

然后通过top命令,查看各个进程的内存和CPU情况,如下:



 
(3)根据2中观察到的结果,具体查看占用CPU高的线程在做什么事情,看到是GC线程把CPU打满了。

注:

1) supervisor检测worker心跳,是通过检测本地的心跳文件来完成的,心跳文件的路径为:{storm.local.dir}/supervisor/localstate

2) 查看各个线程在做什么的相关命令为:

jstack :查看各个线程的堆栈

ps -mp pid -o THREAD,tid,time  :查看各线程的CPU使用

printf "%x\n" pid   :把十进制线程id转成16进制,去jstack结果中,查看线程堆栈

 

刚开始怀疑GC是诱因,但是其实最后判定,GC是结果,因为改机整体利用率太高,导致频繁的进行GC,最终导致了恶性循环。

因此,到这里基本上可以判定,本机负载太高导致worker无法及时更新心跳文件,导致supervisor判定其timeout,开始重启worker。

 

(4)为什么此机器负载较高?

经过查看,因为本机内存为128G,storm配置中设置了 supervisor.slots.ports的数量为40个,并且真正的运行的worker也为40个。而且,虽然worker启动限制最大内存为2G,但是实际worker占用内存却很多超过了2G。 这是一个疑点,我还没有搞清楚。

另外一点,发现有些机器也设置了最大40个worker,但是其实只启动了20个,因此,这就涉及到了storm分配资源的问题了。对于单个topology来说,storm会尽可能的把其worker分配到单台机器上面,但是并没有考虑到机器的负载。

 

 

总结:对于不容易看出错误的worker重启,基本上是由于机器问题导致的,可以查看机器负载如何。

 

 

 

 

 

 

  • 大小: 26.2 KB
  • 大小: 28.7 KB
  • 大小: 64.9 KB
分享到:
评论

相关推荐

    Storm相关脚本说明文档.

    此文档由黄崇远撰写于2013年9月3日,旨在详细介绍与Apache Storm集群管理相关的三个关键脚本:集群免登陆脚本(`sshFreeLogin.sh`)、操作Zookeeper集群脚本(`optZk.sh`)以及Nimbus监控重启脚本(`monitorNimbus....

    storm提交topology的过程共1页.pdf.zip

    【标题】"storm提交topology的过程"涉及到的是Apache Storm这一分布式实时计算系统中的核心操作——部署和运行...在实际应用中,还需要关注性能优化、故障排查以及与其他系统(如Kafka、Hadoop等)的集成等方面的知识。

    如何自定义HDInsight Storm 日志文件大小-longfei1

    保存更改后,选择一个合适的时间重启与 Storm 相关的服务,以确保新配置生效。 配置更改部署到所有节点,包括 headnode 和 worknode。您可以在 `/usr/hdp/XXXX/storm/log4j2/worker.xml` 文件中检查更新后的配置。...

    锐捷show命令日记

    - 使用`show storm-control [interface-id]`查看风暴控制的设置。 - 使用`show interfaces switchport`显示受保护端口的信息。 - **功能**: 这些命令用于监控和管理网络接口。 - **应用场景**: 接口的状态和性能对...

    思科7609路由器端口反复UPDown导致err-disable参考.pdf

    首先,故障现象是业务系统服务器在重启后,与思科7609路由器相连的GE9/12端口进入err-disable状态,导致网络中断。err-disable是一种安全机制,当接口检测到潜在的问题(如物理层错误、协议错误或链路不稳定)时,会...

    F-Engine S3600系列 电信级以太网多业务平台命令行(CLI)手册(V2.0)

    手册还提到了一些日志相关命令,如开启日志记录的`loggingon`、清除日志历史的`clearlogginghistory`、显示日志历史记录的`showlogginghistory`等,这些命令用于管理和查看系统日志,便于故障排查和系统监控。...

    ipscan.rar 呀

    通过这种方式,ipscan可以帮助用户快速定位网络问题,比如识别出哪些设备可能需要重启或者检查网络连接。 3. **命令行界面**:ipscan通常具有命令行界面,这意味着用户可以通过输入特定的命令参数来定制扫描行为,...

Global site tag (gtag.js) - Google Analytics