трёх серверах есть таблица с движком ReplicatedReplacingMergeTree, один шард, три реплики. Даю команду optimize table short.tags partition 20210509 на первом узле, на третьем процесс завершается через несколько секунд, на первом "зависает" команда, хотя сам мержинг проходит за сопоставимое с третьим узлом время, а на втором вот такое вижу: Not executing log entry MERGE_PARTS for part 20210509_0_12690_490 because source parts size (1.61 GiB) is greater than the current maximum (1.44 GiB), хотя памяти там свободной море и через считанные минуты начинает мержиться другая таблица с размером объединения 2.5GB. Подскажите, куда посмотреть?
дело не в памяти, а в свободном месте на ДИСКЕ там динамически высчитывается размер парта максимальный который можно мержить исходя из того что свободно на диске https://github.com/ClickHouse/ClickHouse/blob/495c6e03aa9437dac3cd7a44ab3923390bef9982/src/Storages/MergeTree/MergeTreeDataMergerMutator.cpp#L167-L188 граничные значения задаются через настройки MergeTree (см. system.merge_tree_settings) https://clickhouse.tech/docs/en/operations/settings/merge-tree-settings/#max-bytes-to-merge-at-max-space-in-pool и https://clickhouse.tech/docs/en/operations/settings/merge-tree-settings/#max-bytes-to-merge-at-min-space-in-pool
посмотрите какие таблицы у вас сожрали место на диске возможно поможет https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk
Спасибо большое! Очень похоже на то.
еще посмотрите в настройки background_pool_size текущие https://clickhouse.tech/docs/en/operations/settings/settings/#background_pool_size возможно у вас итак много мержей идет, поэтому свободных entries под OPTIMIZE тупо нет по идее OPTIMIZE на одной реплике, приведет к тому что новые смерженные парты поставятся в очередь на репликацию и скачаются на другие реплики и вам не надо на всех трех реплпиках OPTIMIZE запускать
Мержей текущих минимально. 10 - максимум.
Удивляет то, что на разделе, примотированном под /clickhouse/data/short - места много, но стоило освободить /, на котором оставалось свободно 3ГБ - мержи заработали. Буду выяснять, почему он не тот раздел проверяет.
ну значит не 10 посмотрите еще раз в код https://github.com/ClickHouse/ClickHouse/blob/495c6e03aa9437dac3cd7a44ab3923390bef9982/src/Storages/MergeTree/MergeTreeDataMergerMutator.cpp#L167-L188 он вызывается вот тут https://github.com/ClickHouse/ClickHouse/blob/9f5cd35a6963cc556a51218b46b0754dcac7306a/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp#L1147-L1148 и вот тут выводится ваше сообщение об ошибке https://github.com/ClickHouse/ClickHouse/blob/9f5cd35a6963cc556a51218b46b0754dcac7306a/src/Storages/MergeTree/ReplicatedMergeTreeQueue.cpp#L1188-L1202
еще раз. я немного наврал, он проверяет не размер он проверяет кол-во свободных тредов в пуле и от этого динамически по диапозону считает размер
Обсуждают сегодня