[ https://issues.apache.org/jira/browse/KAFKA-3980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15388382#comment-15388382 ]
Andrew Jorgensen edited comment on KAFKA-3980 at 7/21/16 9:37 PM: ------------------------------------------------------------------ I was able to extract a list of all the ids from the map in the JmxReporter and have uploaded them here (https://drive.google.com/file/d/0B_65les2Npo5OHFyMVpXSjd1cXc/view?usp=sharing). The compressed size is 29M and uncompressed it is 224M. In the list you can see that the type=Fetch keys have clearly defined names but all the type=Produce seem to have completely randomized ids. I think that in general this makes sense, we dont really need a id on the producer side but the JmxReporter should not grow unbounded. EDIT: Another data point is that I believe we are using the 0.8.1.1 client to talk to a 0.9.0.1 cluster. Not sure if the version mismatch there is contributing. It looks like the default client-id in the 0.8.1.1 client was an empty string where-as the new one uses an AtomicInteger. was (Author: ajorgensen): I was able to extract a list of all the ids from the map in the JmxReporter and have uploaded them here (https://drive.google.com/file/d/0B_65les2Npo5OHFyMVpXSjd1cXc/view?usp=sharing). The compressed size is 29M and uncompressed it is 224M. In the list you can see that the type=Fetch keys have clearly defined names but all the type=Produce seem to have completely randomized ids. I think that in general this makes sense, we dont really need a id on the producer side but the JmxReporter should not grow unbounded. > JmxReporter uses excessive memory causing OutOfMemoryException > -------------------------------------------------------------- > > Key: KAFKA-3980 > URL: https://issues.apache.org/jira/browse/KAFKA-3980 > Project: Kafka > Issue Type: Bug > Affects Versions: 0.9.0.1 > Reporter: Andrew Jorgensen > > I have some nodes in a kafka cluster that occasionally will run out of memory > whenever I restart the producers. I was able to take a heap dump from both a > recently restarted Kafka node which weighed in at about 20 MB and a node that > has been running for 2 months is using over 700MB of memory. Looking at the > heap dump it looks like the JmxReporter is holding on to metrics and causing > them to build up over time. > !http://imgur.com/N6Cd0Ku.png! > !http://imgur.com/kQBqA2j.png! > The ultimate problem this causes is that there is a chance when I restart the > producers it will cause the node to experience an Java heap space exception > and OOM. The nodes then fail to startup correctly and write a -1 as the > leader number to the partitions they were responsible for effectively > resetting the offset and rendering that partition unavailable. The kafka > process then needs to go be restarted in order to re-assign the node to the > partition that it owns. > I have a few questions: > 1. I am not quite sure why there are so many client id entries in that > JmxReporter map. > 2. Is there a way to have the JmxReporter release metrics after a set amount > of time or a way to turn certain high cardinality metrics like these off? > I can provide any logs or heap dumps if more information is needed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)