MQ常见报错
补充:
1、broker busy,start flow control for a while
解决:增大 waitTimeMillsInSendQueue 默认为 200
解析:在进行消息追加时,再一次判断PageCache是否繁忙,如果繁忙,则抛出上述错误
2、broker busy, start flow control for a while, period in queue: %sms, size of queue: %d
解决:增大 waitTimeMillsInSendQueue 默认为 200
解析:如果检测到PageCache繁忙,并且发送队列中还有排队的任务,则直接不再等待,直接抛出系统繁忙错误,使正在排队的线程快速失败,结束等待
3、system busy,start flow control for a while
解决:增大 osPageCacheBusyTimeOutMills 默认为1000
解析:如果一次消息追加过程的时间超过了Broker配置文件osPageCacheBusyTimeOutMills,则认为pageCache繁忙,osPageCacheBusyTimeOutMills默认值为1000,表示1s。在不开启transientStorePoolEnable机制时,如果Broker PageCache繁忙时则抛出上述错误,判断PageCache繁忙的依据就是向PageCache追加消息时,如果持有锁的时间超过1s,则会抛出该错误;在开启transientStorePoolEnable机制时,其判断依据是如果TransientStorePool中不存在可用的堆外内存时抛出该错误。】
4、too many requests and system thread pool busy
解决:增大sendThreadPoolQueueCapacity 默认为10000
解析:其抛出的源码入口点:NettyRemotingAbstract#processRequestCommand,其调用地方紧跟3.1,是在向线程池执行任务时,被线程池拒绝执行时抛出的