Uploaded image for project: 'ActiveMQ'
  1. ActiveMQ
  2. AMQ-1739

ActiveMQ 5.1.0 runs out of file descriptors with lots of 'CLOSE_WAIT' sockets

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 5.1.0
    • Fix Version/s: 5.2.0
    • Component/s: Broker
    • Labels:
      None
    • Environment:

      Description

      We have no idea why or when, but within a few days after start-up, ActiveMQ suddenly runs out of file descriptors (we've raised the limit to 10240). According to lsof it has lots of sockets which are in CLOSE_WAIT when that happens. As soon as that happened once, it would re-occur within a few hours. This behavior did not happen with ActiveMQ 5.0.

      We have five queues, all with only one consumer. All consumption and production is via the Stomp-interface using PHP-clients. Three of those queues get up to 50-100 messages/second in peak moments, while the consumers adjust their own consumption rate to the systems load (normally its maxed to about 50-150/sec). So in high-load moments on the consumers, the queues can grow to a few thousand messages, normally the queues are emptied as soon as a message occurs. Those five consumers stay connected indefinitely.

      The messages are all quite small (at most 1 KB or so) and come from 5 web servers. For each web page-request (about 2-3M/day) a connection is made to ActiveMQ via Stomp and at least one message is sent to ActiveMQ, for most requests two are sent to the two most active queues. For all request a new connection is made and at most 4 stomp-messages are sent to ActiveMQ (connect, two messages, disconnect), since apache+php does not allow useful reuse of sockets and similar resources.So
      So the connection-rate is about the same as the highest message rate on any of the queues (so 50-100connects/second).

      When the high amount of sockets in CLOSE_WAIT occurs, we manually disable the producers and the sockets disappear gradually. After that the amount of sockets stays around 180-190 (mostly opened jars), but seams to re-increase more easily than when ActiveMQ is restarted. I have not checked if anything special happens on the web servers or databases, since their producer and consumer implementation has not changed since 5.0.

      What I did notice is that the memory-consumption increases heavily prior to running out of descriptors, and the consumption re-increases way to fast compared to before 11:45u:
      http://achelois.tweakers.net/~acm/tnet/activemq-5.1-memory-consumption.png

        Attachments

          Activity

            People

            • Assignee:
              rajdavies Robert Davies
              Reporter:
              acm Arjen
            • Votes:
              6 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: