Я использую Flink версии 1.8.
Основная конфигурация следующая:
env.java.opts: -Djavax.net.ssl.keyStoreType=JKS -Djavax.net.ssl.trustStoreType=JKS
taskmanager.heap.size: 12288m
taskmanager.numberOfTaskSlots: 7
Заявленный размер кучи12 ГБ, почему он показывает 7,33 ГБ в разделе обзора.
Согласно документам Heap Size = declared heap size - network buffer memory(Default: 0.1 times declared heap but up to max 1gb)
. Таким образом, правильное значение показано в разделе JVM (Heap / Non-Heap), т.е. 11 ГБ
Network Memory Segments
: Я полагаю, поскольку 1 ГБ сейчас используется в качестве сетевой буферной памяти, поэтому 32768 сегментов в основном относятся к количеству сегментов памяти размером 32 КБ. Они используются для каналов TCP для передачи данных между задачами. Насколько я понимаю, он все еще находится в куче (и, следовательно, вычитается из объявленной кучи), но выделен more like ByteBuffer.allocate()
. Это правильно?
После этого блога Жонглирование битами и байтами , в частности By default 70% of the JVM heap that is available after service initialisation is allocated by the MemoryManager.
. Так что это память, используемая задачами в виде сегментов памяти для буферизации данных на них для выравнивания контрольных точек, широковещательных данных, оконных данных и т. Д. Поскольку taskmanager.memory.off-heap = false
в этом случае, эта память будет выделяться в куче. Поэтому я предполагаю, что показанная здесь 4,95 ГБ используемая память - это в основном память, используемая задачами для буферизации данных для различных целей из управляемой памяти, которая должна быть 11GB * 0.7 = 7.7GB
.
Как я могу получить доступ к этому managed memory
метрическаяИмеется ли для этого метрика.
Кроме того,
Что относится к метрике прямой памяти и отображенной памяти. Я использую RocksDB в качестве своего бэкэнда состояния. Так это размер государства, который управляется из кучи? Как емкость и использование этого определяется Flink. Какие проблемы могут быть обнаружены из-за неправильной конфигурации, если возможно, этого значения.
Кроме того, это потоковое задание, если так или иначе имеет значение.