MQTT/MongoDB 更新后应用程序性能下降
MQTT/MongoDB application performance loss after update
我更新了订阅 MQTT 主题并将收到的消息保存在 MongoDB 数据库中的应用程序。
使用 paho Java MQTT 驱动程序 和 Spring 数据 MongoDB.
应用程序是这样工作的:
当消息到达时,消息处理被移至单独的线程(使用 ThreadPoolExecutor)。因此到达的消息被确认得非常快,当系统处于暂时的重负载下时,我不需要因为 'inflight queue full' 错误而陷入丢失消息的麻烦。可能会发生但我通常没有观察到的情况是,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
我怀疑库中的某些内容导致性能下降。 MongoDB Java 驱动程序中更改的 WriteConcern 之类的东西,如 here 所述(但这不是我的问题,因为我已经在我的 [=] 中使用了 mongo 驱动程序 3.4.3 35=] 8 构建应用程序)。我只是找不到它可以是什么。
如果您知道可能导致此行为的原因,请告诉我。我现在很茫然。
事实证明,将 paho java MQTT 客户端从版本 1.2.0 更新到 1.2.1(或 1.2.2)导致 CPU 使用量显着增加。
issue #754 是为此在 GitHub 问题跟踪器中创建的。
我更新了订阅 MQTT 主题并将收到的消息保存在 MongoDB 数据库中的应用程序。
使用 paho Java MQTT 驱动程序 和 Spring 数据 MongoDB.
应用程序是这样工作的:
当消息到达时,消息处理被移至单独的线程(使用 ThreadPoolExecutor)。因此到达的消息被确认得非常快,当系统处于暂时的重负载下时,我不需要因为 'inflight queue full' 错误而陷入丢失消息的麻烦。可能会发生但我通常没有观察到的情况是,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
我怀疑库中的某些内容导致性能下降。 MongoDB Java 驱动程序中更改的 WriteConcern 之类的东西,如 here 所述(但这不是我的问题,因为我已经在我的 [=] 中使用了 mongo 驱动程序 3.4.3 35=] 8 构建应用程序)。我只是找不到它可以是什么。
如果您知道可能导致此行为的原因,请告诉我。我现在很茫然。
事实证明,将 paho java MQTT 客户端从版本 1.2.0 更新到 1.2.1(或 1.2.2)导致 CPU 使用量显着增加。
issue #754 是为此在 GitHub 问题跟踪器中创建的。