赞
踩
rabbitMQ流控介绍
rabbitMQ的流控可以分为两种:
一种是单个链接上的流控:Per-Connection Flow Control
一种是全局流控:
Memory-Based Flow Control
Disk-Based Flow Control
流控测试结果
per-connection flow
触发单个链接的流控可能是因为connection、channel、queue的某一个过程处于flow状态,这些状态都可以从监控平台上监控到。当单个队列达到最大流速时,或者多个队列达到总流速时,都会触发流控。
触发单个链接的流控,写消息的速率会降低,但是总体还是会有消息写入到消息队列中,所以说单个链接的流控不是阻塞状态的。
Memory-Based/Disk-Based Flow Control
内存和磁盘引起的全局流控,会导致线程一直处于网络写状态,线程被阻塞,且其他线程会处于Blocked状态。
线程状态信息如下:
"Thread-1" prio=6 tid=0x000000000c651800 nid=0xfb8 waiting for monitor entry [0x000000000d2be000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.io.BufferedOutputStream.write(Unknown Source)
- waiting to lock <0x0000000781641638> (a java.io.BufferedOutputStream)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。