今天在使用RTM系统debug测试时,发现程序起来之后unacked就会一直持续。经过查阅资料
- 如果队列中ready状态的消息数比较多,可以认为是消费者的处理能力不足
- 如若处理过程中出现异常,而没有回复ack 应答。通过后台就会看到有 unacked 的数据。
- 程序断开于rabbitmq的链接后 unacked的消息状态会重新变为ready 等待消费。
事实上,RTM是一个多线程嵌套多线程的程序,其逻辑大致是
这样展开,峰值估计每次都能提交上千个task。
通过top -Hp PID查看开了多少task
正式环境能到达500+