一、storm ui显示异常,例如内容显示不完整。由于发布版本存在js异常,从github上获取最新代码修复bug。
二、kafka与storm整合后性能提升,kafka在设计时,为了增加并发访问及处理性能,在topic中加入了partitions属性,也就是将数据打散,提高并发与处理性能。由于队列信息offset是在客户端维护,storm 中kafkaspout在解决并发互斥时采用task(可以理解成进行队列读取的类实例)与partitions一一对应的方式来解决互斥访问。topology在使用时,kafkaspout的并发度可以根据具体topic的partitions属性来设定。这样通过增加topic partitions和并发度,达到了预期的处理性能。 三、storm安装部署之前,需要配置hosts文件,保证机器名与ip对应关系正确。 四、topology在分配时应根据硬件配置来选取合适的task、worker数量,防止系统负载过重,可使用top对系统内存、cpu占比、load average等参数进行监控。 五、日志出现zk timeout异常时,排查storm进程内存占用资源,内存溢出会导致出现此类异常。GC方式建议使用Concurrent Mark Sweep GC方式。 六、日志无异常,storm ui中spout存在fail消息。问题原因,消息处理时间超过系统默认的超时时间(30s),可通过参数topology.enable.message.timeouts进行配置。 七、如发现storm进程内存占用过高,可排查一下外围系统,看是否由于其他中间件处理性能(例如db入库瓶颈)导致。 八、storm进程内存old区增速过快,gc触发频繁,可通过内存分析先确定性能瓶颈点,如集群处理能力不足,可以考虑在topology中设置topology.max.spout.pending来进行message限制。