littlersmall / rabbitmq-access

rabbitmq手动确认模式java封装

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Thread.sleep(Constants.RETRY_TIME_INTERVAL)导致CPU飙升

wwhworkspace opened this issue · comments

你好,我在发送邮件的过程中用到了您文章中的发送确认机制,在一次性发送5000封的时候,突然服务器CPU爆了,根据堆栈文件分析是startRetry中Thread.sleep(Constants.RETRY_TIME_INTERVAL)睡眠一分钟,导致瞬间创建了几千个线程同时等待耗尽了CPU,这个地方我试图缩短了睡眠时间CPU还是很容易异常升高?这个有好的解决方案吗?

我们也遇到这种情况了,我们把RetryCache做成单例了,

我们也遇到这种情况了,我们把RetryCache做成单例了,

我的问题已经解决了,是SenderExample的使用方式不对; 你可以再查阅下作者的SenderExample使用方法,注意里面的MessageSender在整个过程中只初始化一次,如果这里每遇到一个消息就初始化一次,就会导致系统有一个专用线程被启用(RetryCache.startRetry),而且会一直存在不会释放;正常情况下,这里的线程数等于你的队列数;