storm资源冲突
本方案出自《storm应用实践:实时事务处理之策略》,简略的写了一部分,详细的方法就看书吧
1)集群中工作进程冲突:
解决:通过查看stormUI cluster summary中的free slots是否为零(为零表示新拓扑无法部署,没有可用空进程)
2)拓扑停止或者不执行:
一般是因为没有可用空进程了,可以通过减少现存拓扑在用的工作进程数量或者增加集群总的进程数量(修改jvm默认内存配置/添加工作进程数量(添加端口)或者增加节点)
3)slot或者jvm内存冲突:
通过配置GC日志记录进行日志分析OOM(outofmemary)错误
4)节点间内存冲突
开启内存交换(不考虑传输延迟)
或者降低工作进程使用的总体内存量(减少整体工作进程的数量/降低jvm空间大小)
或者为每个节点增加内存
5)cpu资源冲突:
增强cpu
减少每个工作节点上的工作进程数量来分担jvm上的负载
6)节点间io冲突:
磁盘io
减少磁盘写入/换固态/不写入NFS类型的网络文件系统
网络io
换快网/减少每个节点上的工作进程/增加socket端口数量
7)缓冲区溢出:(包括执行器的输入队列、输出队列、工作节点中的对外队列)
通过查看debug入职进行判断。
解决方法一般:
1、调整生产和消耗的比例
2、提升所有拓扑的缓冲区大小
3、提升特定拓扑的缓冲区大小
4、设置spout的最大待定数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了