RabbitMQ:erl.exe 占用CPU过高

16

我已经在我的应用程序中实现了RabbitMQ,并在Windows Server 2008服务器上运行,问题是erl.exe占用了很高的CPU使用率,有时甚至达到40-45%的CPU使用率,即使在理想情况下(当不处理任何队列时),它也需要至少4-15%的CPU使用率。

为什么会出现高CPU使用率?是否有任何设置或其他需要做的事情。


服务器日志上记录了什么? - old_sound
@old_sound 关于 Erlang 没有任何内容。 - jkyadav
我的意思是,在RabbitMQ日志上。 - old_sound
@old_sound RabbitMQ 日志中没有任何记录。 - jkyadav
有人在此刻监听队列吗?如果是,那么监听的是什么?你将问题标记为C#,所以我假设你很可能正在使用EasyNetQ?你能展示一下你是如何订阅服务总线的吗?Windows 2008服务器的规格是什么? - MindingData
可能与这个旧的 bug 有关,当 Windows 从睡眠模式或休眠模式返回时:http://markmail.org/thread/zlksjp24hifef5qk - Troglo
1个回答

2
你说即使没有处理队列,CPU使用率仍然在4-15%,但是你的应用程序在运行吗?如果之前没有这样做,请尝试在没有应用程序使用Rabbit时监视erl。
我想到的一件事是,你可能正在一个循环中使用QueingBasicConsumer,这可能会导致CPU使用率增加。如果你正在使用QueingBasicConsumer并且它是造成问题的原因,请尝试将其替换为EventingBasicConsumer(这样你就不需要忙等待),看看是否有所改善。
另外,你的应用程序如何使用Rabbit?根据文档,每个IConnection都由一个后台线程支持,如果你的应用程序创建了大量连接,这可能是减速的另一个原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接