Slackbot
11/09/2022, 1:52 PMGian Merlino
11/09/2022, 5:21 PMGian Merlino
11/09/2022, 5:24 PMGian Merlino
11/09/2022, 5:24 PMGian Merlino
11/09/2022, 5:25 PMkfaraz
11/09/2022, 6:26 PMoverlord logs are continuously allocating pending segmentsI don't think a 15min granularity would help with the segment allocation slowness. For your cluster, I agree with Gian, you should try going with an HOUR granularity. You also mention that with a granularity higher than 15 min, you end up with too many segments per time chunk (after compaction). You could try increasing the number of rows per segment specified in the auto-compaction config, and use
range partitioning on 3 to 4 dimensions for better data distribution.
Could you please also elaborate on how the "coordinator slows down"? If it's segment loading and datasource availability that takes time, you can try increasing the load queue size through the coordinator dynamic config.
Hope this helps 🙂Nick M
11/09/2022, 9:44 PMgenerally these operations are limited by metadata store performance: scaling up your metadata store generally helpsWe're running the bitnami postgresql-ha deployment for metadata. It's a cluster of 3 (1 master and 2 replicas where read requests are load balanced and write requests are forced to the master). CPU and memory does not seem to be close to exhausted according to the metrics. And it's backed by some decent disks and the latency doesn't seem to be an issue either. What are others using for metadata? Does mysql offer better performance?
Nick M
11/09/2022, 9:48 PMbtw, i'm wondering, why not use hour segment granularity? i've seen that as the most common segment granularity for streaming dataWe found that when using hour segment granularity, we ran into issue with the coordinator cycles taking too long due to the number of segments in the timechunk (post compaction we have upwards of 3000 segments at an hourly granularity). I think we're hitting this https://github.com/apache/druid/issues/11700
Nick M
11/09/2022, 9:54 PMCould you please also elaborate on how the "coordinator slows down"? If it's segment loading and datasource availability that takes time, you can try increasing the load queue size through the coordinator dynamic config.The coordinator cycle takes a while due to the VersionedIntervalTimeline issue above (or was on 0.23 when we decided to move to 15 minute granularity). The cycles took so long that eventually it stopped handing off segments during ingest with the default completion timeout
kfaraz
11/10/2022, 2:54 AMkfaraz
11/10/2022, 3:19 AMcoordinator/time metric to identify the problematic coordinator duty.
The timeline build happens on a separate thread, so it shouldn't affect the coordinator cycles, except maybe through the MarkAsUnusedOvershadowedSegments duty, we can be sure once we look at the above metric. If it does turn out to be the MarkAsUnused duty that is taking most of the time, you can temporarily disable it by setting millisToWaitBeforeDeleting in the coordinator dynamic config to a very high value. (a fix for this duty has already been merged https://github.com/apache/druid/pull/13287 and will be released in Druid 25).Nick M
11/10/2022, 8:19 AMAfter compaction, what is the typical size of each of your segments in terms of rows and bytes?Around 5 million rows with each row around 200 bytes so each segment is ~1GB in size
Nick M
11/10/2022, 8:25 AMThe timeline build happens on a separate thread, so it shouldn't affect the coordinator cycles, except maybe through theThis duty is indeed the one that takes the most time in the coordinator duty cycle. Looking forward to Druid 25 as that will fix one of the biggest issues we've seen with druid. Does that patch change the acceptable number of segments per timechunk (2000 as per https://github.com/apache/druid/issues/11700#issuecomment-918374527)?duty, we can be sure once we look at the above metric. If it does turn out to be theMarkAsUnusedOvershadowedSegmentsduty that is taking most of the time, you can temporarily disable it by settingMarkAsUnusedin the coordinator dynamic config to a very high value. (a fix for this duty has already been merged https://github.com/apache/druid/pull/13287 and will be released in Druid 25).millisToWaitBeforeDeleting
kfaraz
11/10/2022, 8:28 AMkfaraz
11/10/2022, 8:30 AMAround 5 million rows with each row around 200 bytes so each segment is ~1GB in size
So you are getting around 1TB data per hour? Since your segments already seem big enough, you cannot increase the segment size further to reduce the total number of segments. Instead, try enabling roll-up if you are not already using it.
Nick M
11/10/2022, 8:45 AMSo you are getting around 1TB data per hour?
Since your segments already seem big enough, you cannot increase the segment size further to reduce the total number of segments. Instead, try enabling roll-up if you are not already using it.Yeah, around 1TB / hour at the moment but that will increase when we can stabilise things at this speed. Roll-up is on the horizon but in this early stage of deployment is not yet in place and won't be for a while I don't think
Samarth Jain
11/10/2022, 7:38 PMNick M
11/10/2022, 7:40 PMSamarth Jain
11/10/2022, 7:40 PMSamarth Jain
11/10/2022, 7:42 PMSamarth Jain
11/10/2022, 7:43 PMGian Merlino
11/21/2022, 11:11 AMGian Merlino
11/21/2022, 11:13 AMGian Merlino
11/21/2022, 11:14 AMGian Merlino
11/21/2022, 11:14 AMNick M
11/23/2022, 4:21 PMkfaraz
11/23/2022, 4:30 PM