更新后MQTT / MongoDB应用程序性能损失

问题描述 投票:1回答:1

我更新了一个应用程序,该应用程序订阅了MQTT主题,并将收到的消息保留在MongoDB数据库中。正在使用paho Java MQTT驱动程序Spring Data MongoDB

应用程序的工作方式如下:消息到达时,消息处理将移至单独的线程(使用ThreadPoolExecutor)。这样就可以非常快速地确认到达的消息,由于系统在临时性重负载下出现了“机上队列已满”错误,因此我不必为丢失的消息感到麻烦。可能发生的事情是ThreadPoolExecutor队列快速增长,因为它不能足够快地处理,但是我通常无法观察到。]

更新系统后,我观察到-尤其是在启动之后,不仅-ThreadPoolExecutor队列增加。应用程序总是设法赶上处理的速度,但是总是有很多时候队列增长到几万个任务。而且,由于每秒约700条消息的持续负载(由于测试)。

我到目前为止测试的是:

Java  8 and App build with Java 8  -> works great
Java 11 and App build with Java 8  -> works great (some Illegal reflective access warnings of course)
Java 11 and App build with Java 11 -> makes some problems

应用程序更新当然包含依赖项更新,主要是以下内容

spring-boot-starter-data-mongodb         1.15.12.RELEASE -> 2.2.4.RELEASE
  spring-data-mongodb                    1.10.11.RELEASE -> 2.2.4.RELEASE
  mongodb-driver                                          3.4.3 -> 3.11.2

org.eclipse.paho.client.mqttv3                              1.2.0 -> 1.2.2

MongoDB Server Version is 3.4.24

我怀疑库中的某些内容导致性能下降。就像描述here的MongoDB Java驱动程序中已更改的WriteConcern一样(但这不是我的问题,因为我已经在Java 8构建应用程序中使用了mongo驱动程序3.4.3)。我就是找不到它。

[如果您有任何可能导致此现象的原因,请告诉我。现在我很茫然。

我更新了一个应用程序,该应用程序订阅了MQTT主题,并将收到的消息保留在MongoDB数据库中。是使用paho Java MQTT驱动程序和Spring Data MongoDB。该应用程序的工作方式如下:...

java mongodb mqtt spring-data-mongodb paho
1个回答
0
投票

事实证明,将paho java MQTT客户端从版本1.2.0更新到1.2.1(或1.2.2)也导致CPU使用率显着增加。

© www.soinside.com 2019 - 2024. All rights reserved.