184 похожих чатов

А подскажите плиз куда копать дальше. Что-то залип. Есть табличка ReplacingMergeTree

над которой периодически выполняют OPTIMIZE TABLE ... ON CLUSTER sharding_name PARTITION 20230524 FINAL, т.к. в нее допихиваются данные, которые с дублями.
Кластер без репликации (только 5 шардов).
В какой-то момент внезапно, а может не очень, перестали удалятся дубли.
Появилось подозрение, что OPTIMIZE отрабатывает на 2 хостах из 5ти, причем один из нормально работающих это собственно сервер к которому коннектится клиент, делающий этот запрос.

Вижу в логах, что периодически удаляются таски на всех хостах <Information> DDLWorker: Task query-0000404897 is outdated, deleting it

task_queue большая.

SELECT count(1)
FROM system.zookeeper
WHERE path = '/clickhouse/task_queue/ddl'
┌─count()─┐
│ 1003 │
└─────────┘

Но я так понимаю тут всё в том числе и выполненное.

system.distributed_ddl_queue - нет не финишированных на здоровых и не очень хостах.

BackgroundPools пустые.

Но почему таски протухают понять не могу. Нагрузки на серверах нет. В какие-то лимиты может уперся?

Или возможно совсем не туда смотрю?

UPD: если пройтись по всем серверам и локально выполнить OPTIMIZE - дубли удаляются конкретно на этом хосте.

6 ответов

17 просмотров

так а что выдается результате optimize on cluster ? on cluster показывают табличку такую со списком серверов

Nikolay-Didenko Автор вопроса
Denny [Altinity]
так а что выдается результате optimize on cluster ...

Выполнил сейчас еще раз OPTIMIZE уже сам. Завершился успешно на всех 5ти хостах. После этого дубли удалились.. Но через некоторое время опять появляются. Завтра еще с датаинженерами посмотрю регламентные процессы. Но если говорить про расчет хеша для шардирования... Всё равно какая-то ерунда... SELECT dt, shard, shard_calc, records, round((records / s) * 100, 0) AS pct FROM ( SELECT toDate(session_start) AS dt, mod(intHash64(session_id), 5) + 1 AS shard_calc, shardNum() AS shard, count(1) AS records, sum(records) OVER (PARTITION BY toDate(session_start)) AS s FROM sessions WHERE (toDate(session_start) >= '2023-05-24') AND (toDate(session_start) <= '2023-05-24') GROUP BY dt, shard, shard_calc ) ORDER BY dt DESC, shard ASC, shard_calc ASC Query id: f76b1ccf-d46e-45d7-bc37-490f9861fc9f ┌─────────dt─┬─shard─┬─shard_calc─┬─records─┬─pct─┐ │ 2023-05-24 │ 1 │ 1 │ 6137 │ 4 │ │ 2023-05-24 │ 1 │ 2 │ 6083 │ 4 │ │ 2023-05-24 │ 1 │ 3 │ 6038 │ 4 │ │ 2023-05-24 │ 1 │ 4 │ 6052 │ 4 │ │ 2023-05-24 │ 1 │ 5 │ 6131 │ 4 │ │ 2023-05-24 │ 2 │ 1 │ 6262 │ 4 │ │ 2023-05-24 │ 2 │ 2 │ 6153 │ 4 │ │ 2023-05-24 │ 2 │ 3 │ 6035 │ 4 │ │ 2023-05-24 │ 2 │ 4 │ 6074 │ 4 │ │ 2023-05-24 │ 2 │ 5 │ 6128 │ 4 │ │ 2023-05-24 │ 3 │ 1 │ 6162 │ 4 │ │ 2023-05-24 │ 3 │ 2 │ 6217 │ 4 │ │ 2023-05-24 │ 3 │ 3 │ 6085 │ 4 │ │ 2023-05-24 │ 3 │ 4 │ 6294 │ 4 │ │ 2023-05-24 │ 3 │ 5 │ 6100 │ 4 │ │ 2023-05-24 │ 4 │ 1 │ 6178 │ 4 │ │ 2023-05-24 │ 4 │ 2 │ 6120 │ 4 │ │ 2023-05-24 │ 4 │ 3 │ 5960 │ 4 │ │ 2023-05-24 │ 4 │ 4 │ 6130 │ 4 │ │ 2023-05-24 │ 4 │ 5 │ 6153 │ 4 │ │ 2023-05-24 │ 5 │ 1 │ 6209 │ 4 │ │ 2023-05-24 │ 5 │ 2 │ 6148 │ 4 │ │ 2023-05-24 │ 5 │ 3 │ 6278 │ 4 │ │ 2023-05-24 │ 5 │ 4 │ 6222 │ 4 │ │ 2023-05-24 │ 5 │ 5 │ 6207 │ 4 │ └────────────┴───────┴────────────┴─────────┴─────┘ Какие-то чудеса, в которые не хочется верить... а intHash64 от UInt64 нормально работает?

/clickhouse/task_queue/ddl сюда в том числе ошибки должны писаться... поищи через system.query_log по времени, на других хостах вообще запусклись твои DDL или нет?

Nikolay-Didenko Автор вопроса
Slach [altinity]
/clickhouse/task_queue/ddl сюда в том числе ошибк...

Спасибо за подсказку. Я эти логи и в зукипере смотрел как раз. С этой проблемой разобрался тогда еще. Посмотрел код коллег - там было что-то типа: INSERT INTO distributed_over_replacingmergetree_table; sleep(X); OPTIMIZE replacingmergetree_table ON CLUSTER cluster; "Люблю" sleep в коде ) В какой-то момент объемы данных перестали успевать долетать до всех шардов за X времени. В итоге OPTIMIZE отрабатывал, но до фактической вставки на некоторых нодах.

Nikolay Didenko
Спасибо за подсказку. Я эти логи и в зукипере смот...

Вряд-ли sleep(3) секунды мог работать нормально

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта