【问题标题】:Apollo takes 100% CPUApollo 占用 100% CPU
【发布时间】:2022-12-15 02:16:27
【问题描述】:

我在 Linux 中使用 ActiveMQ Apollo 1.7.1。我使用 MQTT 从服务器向客户端发送消息。

阿波罗配置如下:

<broker xmlns="http://activemq.apache.org/schema/activemq/apollo">

  <notes>
    The default configuration with tls/ssl enabled.
  </notes>

  <log_category console="console" security="security" connection="connection" audit="audit"/>


  <authentication domain="apollo"/>
  <!-- Give admins full access -->
  <access_rule allow="admins" action="*"/>
  <access_rule allow="*" action="connect" kind="connector"/>


  <virtual_host id="myapollo">
    <host_name>myapollo</host_name>

    <access_rule allow="users" action="connect create destroy send receive consume"/>

    <leveldb_store directory="${apollo.base}/data"/>


  </virtual_host>


  <connector id="tcp" bind="tcp://0.0.0.0:61613"/>

  <key_storage file="${apollo.base}/etc/keystore" password="password" key_password="password"/>

</broker>

有人能告诉我如何找到有关 Apollo 进程占用 100% CPU 的原因的信息吗? 发生此问题后,我们无法通过 TCP 建立新的连接。

【问题讨论】:

  • @JustinBertram,是的,你是对的,我知道我们应该改变解决方案。但是此时此刻,我必须在有时间更改技术之前解决此问题。我们不能完全停止推送通知功能一秒钟
  • 我有一个应用程序 Android,它是客户端。如果我将 Apollo 更改为 ActiveMQ,您认为我需要代码来使我的应用程序与 ActiveMQ 一起工作吗?
  • @JustinBertram,如何从 JVM 获取几个线程转储?
  • 这里有更新吗?你还在面对这个问题吗?
  • 是的,问题一直存在,但它出现不规律

标签: activemq mqtt


【解决方案1】:

ActiveMQ Apollo 近十年没有发布,readme.md in the source code 表示该项目已死。因此,您不太可能获得太多帮助。我的建议是从 JVM 获取几个 thread dumps,然后重新启动代理。希望事情会恢复正常,然后您可以检查线程转储以调查 CPU 使用率的根本原因。

最终你应该切换到一个正在积极开发中的代理。我个人推荐ActiveMQ Artemis,它已经取代 Apollo 作为 ActiveMQ 的下一代代理。 MQTT 是一种标准协议,因此您应该能够部署任何实现 MQTT 的代理,并且您的客户端应该仍然可以工作。值得一提的是,ActiveMQ Artemis 最近实施了 MQTT 5,因此如果您认为自己会将客户端升级到 MQTT 5,那么您将拥有一条平滑的升级路径。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2012-03-10
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多