JStorm bolt/spout 中有三个基本的队列: Deserialize Queue —> Executor Queue —> Serialize Queue。每一个队列都有满的可能。 如果是 serializeQueue is full,那么可能是序列化对象太大,序列化耗时太长。可以精简传输对象。 如果是deserialize queue is full, 或是execute queue is full。 2个原因都是一样的。都是下游bolt处理速度跟不上上游spout或bolt的发送速度。 解决办法:
- 判断是不是一个常态问题以及是不是大面积发生,如果就1个或2个task出现,并且没有引起worker out of memory,其实是可以忽略的。
- 如果一个component大面积发生task 队列满, 或因为task 满导致worker out of memory, 就需要解决处理速度更不上的问题。
http://jstorm.io:8080/FAQ_cn/