Slackbot
03/17/2023, 6:53 PMRenato Santos
03/17/2023, 6:59 PMRenato Santos
03/17/2023, 7:00 PMRenato Santos
03/17/2023, 7:00 PMRenato Santos
03/17/2023, 7:01 PMSergio Ferragut
03/17/2023, 7:01 PMSergio Ferragut
03/17/2023, 7:02 PMRenato Santos
03/17/2023, 7:04 PMresources:
requests:
cpu: "2"
memory: 5.7Gi
limits:
memory: 12Gi
the node has s-8vcpu-16gb
but is shared with other process like historicals, brokers, etc
but in theory, when k8s send a kill signal if the node pressured, it send to the entire pod, not just to one container, muhc less just one jvm processSergio Ferragut
03/17/2023, 7:08 PMRenato Santos
03/17/2023, 7:09 PMRenato Santos
03/17/2023, 7:09 PMRenato Santos
03/17/2023, 7:11 PMRenato Santos
03/17/2023, 7:12 PMSergio Ferragut
03/17/2023, 7:14 PMSergio Ferragut
03/17/2023, 7:14 PMSergio Ferragut
03/17/2023, 7:21 PMRenato Santos
03/17/2023, 7:21 PMSergio Ferragut
03/17/2023, 7:23 PMSergio Ferragut
03/17/2023, 7:23 PMRenato Santos
03/17/2023, 7:24 PMRenato Santos
03/17/2023, 7:25 PMSergio Ferragut
03/17/2023, 7:27 PMSergio Ferragut
03/17/2023, 7:28 PMRenato Santos
03/17/2023, 7:35 PMRenato Santos
03/17/2023, 8:54 PMdruid.worker.categoryRenato Santos
03/17/2023, 8:55 PMRenato Santos
03/17/2023, 8:56 PMSergio Ferragut
03/17/2023, 8:56 PMSergio Ferragut
03/17/2023, 9:05 PMRenato Santos
03/17/2023, 9:06 PMRenato Santos
03/17/2023, 9:06 PM{
"type": "equalDistributionWithCategorySpec",
"workerCategorySpec": {
"strong": false,
"categoryMap": {
"index_kafka": {
"defaultCategory": "_default_worker_category"
},
"partial_dimension_distribution": {
"defaultCategory": "unzipperman"
},
"partial_range_index_generate": {
"defaultCategory": "unzipperman"
},
"partial_index_generic_merge": {
"defaultCategory": "unzipperman"
}
}
}
}
I'm trying with this config right nowRenato Santos
03/17/2023, 9:07 PMRenato Santos
03/17/2023, 9:07 PMSergio Ferragut
03/17/2023, 9:09 PMRenato Santos
03/17/2023, 9:09 PMRenato Santos
03/17/2023, 9:09 PMSergio Ferragut
03/17/2023, 9:09 PMRenato Santos
03/17/2023, 9:11 PMSergio Ferragut
03/17/2023, 9:13 PMRenato Santos
03/17/2023, 9:25 PM2023-03-17T21:23:02,627 INFO [ServiceClientFactory-0] org.apache.druid.rpc.ServiceClientImpl - Service [overlord] request [GET <http://10.244.3.35:8088/druid/indexer/v1/task/partial_range_index_generate_GL_ALL_MSG_SERVER_TIME_hcapdifm_2023-03-17T21%3A22%3A54.539Z/reports>] completed.
2023-03-17T21:23:02,628 WARN [qtp1619129136-174] org.apache.druid.indexing.common.task.batch.parallel.ParallelIndexSupervisorTask - Encountered exception when getting live subtask report for task: partial_range_index_generate_GL_ALL_MSG_SERVER_TIME_hcapdifm_2023-03-17T21:22:54.539Z
java.lang.NullPointerException: null
maybe I need to increase some parameter on the peon. I'm already using druid.server.http.numThreads=60 (which is a lot, I think, given I have only 2 brokers, each using druid.broker.http.numConnections=10)Renato Santos
03/17/2023, 9:26 PMRenato Santos
03/17/2023, 9:37 PMSergio Ferragut
03/17/2023, 10:48 PMRenato Santos
03/17/2023, 10:49 PMRenato Santos
03/17/2023, 10:50 PM-Xms1024M -Xmx1024M -XX:MaxDirectMemorySize=2g current peon config
druid.indexer.fork.property.druid.processing.numMergeBuffers=1
druid.indexer.fork.property.druid.processing.buffer.sizeBytes=450MiB
druid.indexer.fork.property.druid.processing.numThreads=2Sergio Ferragut
03/18/2023, 12:14 AMRenato Santos
03/18/2023, 4:28 AMVino V
03/19/2023, 2:09 PMRenato Santos
03/19/2023, 2:12 PMRenato Santos
03/19/2023, 2:13 PMRenato Santos
03/19/2023, 2:13 PMRenato Santos
03/19/2023, 2:22 PMSergio Ferragut
03/20/2023, 3:28 PMRenato Santos
03/20/2023, 3:50 PMRenato Santos
03/20/2023, 7:24 PMRenato Santos
03/20/2023, 7:33 PMSergio Ferragut
03/20/2023, 9:56 PMmaxBytesInMemory drives intermediate persists. Intermediate persists are local to the MM, they take the in-memory row buffer and write it out locally to disk in segment format.
But is this happened during the publishing stage of the tasks? What does your data look like? Do you have a large number of columns?
The segment merge step that occurs before publishing can use significant amount of memory. To mitigate, you can set maxColumnsToMerge to reduce the memory footprint while merging columns or reduce the maxRowsPerSegment so that overall dataset is smaller when publishing.Renato Santos
03/21/2023, 12:06 AM-Xms512M -Xmx1024M -XX:MaxDirectMemorySize=1g for all middlemanagers. I was having issues with compaction not finishing ever (I was assuming the failures of the tasks were always because of them losing their locking, but I was wrong)
Then I did a few tests and ended up with two sets of middlemanagers, one for the kafka ingestions and another set to make the compactions, durign this change, I accidentally reduced from 512mb~1GB to a fixed Xms512M.
Now I changed back to -Xms640m -Xmx640m -XX:MaxDirectMemorySize=3g
The max rows was set to 100,000 (probably did not hit in one-task-duration during normal ops) but the maxMemory was set to zero, so it was 1/6 (~ 85mb), when I set maxMemory to 20mb just to check without changing the DirectMem It failed during the final phase, before publishing.
The numMergeBuffers=2, sizeBytes=150MiB and numThreads=2 was kept always fixed, using the formula this was theoretically 750mb (where the limit was 1gb when the task was failing with DirectMem errors), I set a big value just because this node is big (16gb) and usually is running with 4 slots at 6GB. Most of the ingestions are very very low volume (like, 1 record a hour), that's why I want so many small workers
Now with 20mb every task finished successfully since 5~ hours agoRenato Santos
03/21/2023, 12:09 AMRenato Santos
03/21/2023, 12:13 AMlongSergio Ferragut
03/21/2023, 7:21 PM