Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-7879

[LTS] Memory Leak With Spring / AMQP Client Long-Running Connections

XMLWordPrintable

    • False
    • None
    • False
    • ARTEMIS-4161, ARTEMIS-4175, ARTEMIS-4198, ARTEMIS-4171
    • Hide

      1. Configure an run an AMQ 7.10.0 broker using default settings
      2. Configure and run the attached reproducer (broker URL is coded in Application.java)
      – from the root of the project:
      mvn clean install
      cd target
      java -cp reproducer-7.0.0-SNAPSHOT.jar:lib/* com.amqtest.main.Application

      3. Allow the reproducer to run for several hours, periodically taking a heap dump of the broker
      4. Compare the number of closed ServerConsumerImpl and ProtonServerSenderImpl objects in the heaps over time:

      select * from org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext pssc where pssc.closed = true
      
      select * from org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl sci where sci.isClosed = true
      
      Show
      1. Configure an run an AMQ 7.10.0 broker using default settings 2. Configure and run the attached reproducer (broker URL is coded in Application.java) – from the root of the project: mvn clean install cd target java -cp reproducer-7.0.0-SNAPSHOT.jar:lib/* com.amqtest.main.Application 3. Allow the reproducer to run for several hours, periodically taking a heap dump of the broker 4. Compare the number of closed ServerConsumerImpl and ProtonServerSenderImpl objects in the heaps over time: select * from org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext pssc where pssc.closed = true select * from org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl sci where sci.isClosed = true

      When a long-running transacted spring boot client is attached to the broker, we observe a gradual increase in closed org.apache.activemq.artemis.protocol.amqp.proton.ProtonServerSenderContext and org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl objects that are not cleaned up. Eventually, we observe diminishing performance due to the huge number of objects in the heap (we see upwards of 850000 of each in the heap after load testing).

            csuconic@redhat.com Clebert Suconic
            rhn-support-dhawkins Duane Hawkins
            Samuel Gajdos Samuel Gajdos
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: