Slackbot
02/13/2023, 7:02 PMGian Merlino
02/14/2023, 10:32 AMjmap -histo <pid>, taken repeatedly. These are much faster to take than heap dumps and show the same high-level info. Not the full object graph, but you get the same high-level object counts.
2) Best: a JVM allocation profiler. These hook into the JVM and track allocations continuously. Definitely the best way to figure out what's pressuring the allocator.Gian Merlino
02/14/2023, 10:34 AMLucas Capistrant
02/15/2023, 3:55 PMQUERYTYPE_DATASOURCE_INTERVAL Within this map are SpillingGroupers who have filtered aggregators and the InDimFilter seems crazy large. Measured in MBs. I'm a bit concerned that these are coming onto heap as Humongous Objects, making heap become fragmented. I see that you added a performance improvement in druid 24 that provides the filter values as UTF-8 out of the box. In my head this lines up with the timeline of this problem becoming more common for us after upgrading to Druid 24.
My question for you now is - what part of the query are these threads for? I'm thinking if we have many segments involved in a query located on a single node, if that node takes a query with these crazy IN filters, there could be a lot of these DimInFilter objects being created at the same time, causing my problems. Does that hypothesis have any merit in your opinion?
Unfortunately I'm only on the platform team, and our query services team would be the ones to put the clamps down on what kind of filters our users can come up with 😅 If I had the power I'd probably put some ground rules in place when it comes to the number of values in these filters to see if it helps at all.Lucas Capistrant
02/15/2023, 6:01 PMQUERYTYPE_DATASOURCE_INTERVAL) who are for what I assume are previous queries. For example, I see a reference to a grouper for a group by on datasource Y in a processing thread that is actually a timeseries for datasource x. I'm trying to wrap my head around the historical query execution code and how the processing thread pool is releasing resources, but these references stood out to meGian Merlino
02/17/2023, 8:17 AMGian Merlino
02/17/2023, 8:18 AMGian Merlino
02/17/2023, 8:20 AMvaluesUtf8 stuff. i.e. delete the variable and also delete the code that uses it:
final Utf8ValueSetIndex utf8ValueSetIndex = <http://indexSupplier.as|indexSupplier.as>(Utf8ValueSetIndex.class);
if (utf8ValueSetIndex != null) {
return utf8ValueSetIndex.forSortedValuesUtf8(valuesUtf8);
}
With that code deleted, we'll fall back to using the utf16 valuesLucas Capistrant
02/20/2023, 4:28 PMLucas Capistrant
02/21/2023, 10:49 PMnone granularity timeseries queries. I was so dialed in on large group by's that I never even noticed these popping up in request logs whenever we had instability. I got tipped off when looking at a heap histogram taken while a node was in the process of dying and there were millions of DateTime objects which got me wondering who the heck was doing insanely granular workloads. bet part is that it isn't even some type of sensor data or financial data where milliseconds even make a differenceGian Merlino
02/22/2023, 12:38 PMnone basically means millisecond.Gian Merlino
02/22/2023, 12:41 PMGian Merlino
02/22/2023, 12:41 PMLucas Capistrant
02/22/2023, 4:29 PMGian Merlino
02/22/2023, 5:19 PMGian Merlino
02/22/2023, 5:19 PM