Storm调优(1)

Storm调优

本文全面探讨Storm的调优,分为两大部分:集群调优和拓扑调优。拓扑调优部分还涵盖了从Kafka中读取消息的优化方法,使用storm-kafka组件。

 一、集群调优

 1. Netty的优化配置
Netty作为Storm的重要组件,其配置直接影响整个集群的性能。主要配置项包括:

`storm.messaging.netty.server_worker_threads`: 服务器工作线程数,默认为1。
`storm.messaging.netty.client_worker_threads`: 客户端工作线程数,默认为1。
`storm.messaging.netty.buffer_size`: 缓冲区大小,设置为5MB。
`storm.messaging.netty.max_retries`: 最大重试次数,设置为300。
`storm.messaging.netty.max_wait_ms`: 最大等待时间(毫秒)。
`storm.messaging.netty.min_wait_ms`: 最小等待时间(毫秒)。
`storm.messaging.netty.transfer.batch.size`: 消息批处理大小。
`storm.messaging.netty.socket.backlog`: 套接字连接数的最大排队数。
`storm.messaging.netty.authentication`: Netty SASL认证,默认为false。

 2. GC日志记录
开启GC日志记录,以监控和优化垃圾回收过程。

 二、拓扑调优

 1. 使用组件的并行度
并行度调整:Storm允许调整Spout/Bolt的并行度。即使初始设置不合理,也可以动态调整。
避免内部线程池:内部线程池可能导致资源消耗不均,影响性能。建议利用组件自身的并行度和CGroup等技术进行资源控制。

 2. Spout中的耗时操作
单线程特性:Spout是单线程的,耗时操作会影响效率。
JStorm的改进:在JStorm中,Spout被分为三个线程,分别负责不同的操作。

 3. fieldsGrouping的数据均衡
字段选择:合理选择字段,避免某些值的过度集中,影响负载均衡。

 4. localOrShuffleGrouping的优先使用
优化网络开销:localOrShuffleGrouping在同一worker内优先传递消息,减少网络和序列化开销。

 5. 设置合理的MaxSpoutPending
动态调整:从小值开始,逐步增加,找到最佳平衡点。
考虑容错:设置过大的值可能增加失败风险,需谨慎处理。

 小结
性能监控:通过监控指标,如Execute latency和complete latency,可动态调整配置以优化性能。
适用性考量:对于不同的使用场景,如Trident,需要特别考虑配置的适用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值