title: RabbitMQ memory usage creeping up and blocking calls... why?
body: <p>I'm using RabbitMQ to handle app logs (windows server 2008 install). apps send messages to the exchange. I have a dedicated queue that gets messages forwarded to it. I then have a windows service connecting to that queue, pulling messages off, and persisting them to DB. I have a n-number of clients connecting to the exchange in real time to latch on the the stream so there are n-number of connections at a time. It is possible that some of these clients may not Close() their connections in code. Many clients have long running connections.</p>
  
  <p>As messages are pulled off the queue, they are auto-ack'ed, so I don't have any unacknowledged messages on the queue. However, I'm seeing the memory of Rabbit grow over time. It starts at 32K or so when first turned on then creeps up until it exceeds the threshold and blocks incoming connections.</p>
  
  <p>I have both .NET and Java clients--but both are auto-ack. </p>
  
  <p>Reading the docs, I didn't see any description of how Rabbit is using memory--i.e. I don't understand why memory would be bloating over time. The messages are getting pulled off and ack'ed which seems to me would mean that Rabbit wouldn't be holding on to it any more and thus can free the associated memory, causing a stable mem usage profile. </p>
  
  <p>I don't see how fiddling with the memory dial in Rabbit would help either--usage just creeps upwards over time: eventually I'll exceed it.  </p>
  
  <p>My guess is that there is something I'm doing wrong with my clients that is causing the memory to grow over time, but I can't think of why that would be. </p>
  
  <pre><code> why does Rabbit memory usage creep up when no messages are kept on any queues? 
  
   what coding practices could cause the RabbitMQ server to 
   retain (and grow) memory?
  </code></pre>