
LeiDruid
14.05.2018
10:21:21
Ага, тогда вроде похоже

Alex
14.05.2018
10:22:44

Nikolai
14.05.2018
10:23:25
Он включается автоматически при некоторой эвристике на размер куска.
Сделан для того, чтобы мержи расходовали меньше памяти.

Google

Alex
14.05.2018
10:25:19
Т.е. если памяти хватает, то не имеет смысла форсировать какими-то настройками его активацию?


Aloneibreak
14.05.2018
10:25:33
В логе должен быть stacktrace ниже. Можете показать?
0. clickhouse-server(StackTrace::StackTrace()+0x15) [0x82e3db5]
1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x21) [0x2cc1371]
2. clickhouse-server(DB::throwReadAfterEOF()+0x4c) [0x2cc13dc]
3. clickhouse-server(DB::readVarUInt(unsigned long&, DB::ReadBuffer&)+0x1f9) [0x2cd2de9]
4. clickhouse-server(DB::TCPHandler::isQueryCancelled()+0x149) [0x2ccd139]
5. clickhouse-server(DB::TCPHandler::processOrdinaryQuery()+0x2fe) [0x2ccddae]
6. clickhouse-server(DB::TCPHandler::runImpl()+0x547) [0x2cd12e7]
7. clickhouse-server(DB::TCPHandler::run()+0x2a) [0x2cd1f2a]
8. clickhouse-server(Poco::Net::TCPServerConnection::start()+0xe) [0x85caf8e]
9. clickhouse-server(Poco::Net::TCPServerDispatcher::run()+0x169) [0x85cb369]
10. clickhouse-server(Poco::PooledThread::run()+0x76) [0x8be1c86]
11. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0x37) [0x8bdde97]


Nikolai
14.05.2018
10:26:57
Есть пара настроек в merge_tree_settings - vertical_merge_algorithm_min_rows_to_activate и vertical_merge_algorithm_min_columns_to_activate. Можно попробовать с ними поиграться.
В логе написано, какой вариант мержа выбран:
Selected MergeAlgorithm: Vertical либо Selected MergeAlgorithm: Horizontal

Alex
14.05.2018
10:32:08

Nikolai
14.05.2018
10:33:39
Cеребряной пулей точно не станет, но может что-то ускорить за счет более оптимального расхода памяти.
А может незначительно замедлить для маленьких кусков за счет того, что перестановка индексов строк пишется на диск.


Aloneibreak
14.05.2018
10:45:19
Выглядит так, будто связь с нодой обрывается. Есть ли что-нибудь в логах самой ноды?
с таким стек трейсом
0. clickhouse-server(StackTrace::StackTrace()+0x15) [0x82e3db5]
1. clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x21) [0x2cc1371]
2. clickhouse-server(PoolWithFailoverBase<DB::IConnectionPool>::getMany(unsigned long, unsigned long, std::function<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> const&, std::function<unsigned long (unsigned long)> const&, bool)+0x1805) [0x7f39355]
3. clickhouse-server(DB::ConnectionPoolWithFailover::getManyImpl(DB::Settings const*, DB::PoolMode, std::function<PoolWithFailoverBase<DB::IConnectionPool>::TryResult (DB::IConnectionPool&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)> const&)+0xcc) [0x7f313fc]
4. clickhouse-server(DB::ConnectionPoolWithFailover::getManyChecked(DB::Settings const*, DB::PoolMode, DB::QualifiedTableName const&)+0x8d) [0x7f318bd]
5. clickhouse-server() [0x75e4797]
6. clickhouse-server(DB::RemoteBlockInputStream::sendQuery()+0x41) [0x75e6cd1]
7. clickhouse-server(DB::IProfilingBlockInputStream::readPrefix()+0x58) [0x75cf128]
8. clickhouse-server(DB::ParallelInputsProcessor<DB::UnionBlockInputStream<(DB::StreamUnionMode)0>::Handler, (DB::StreamUnionMode)0>::thread(MemoryTracker*, unsigned long)+0x175) [0x7cf82f5]
9. clickhouse-server() [0x8d9675e]
10. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76b9) [0x7f6f419736b9]
11. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6c) [0x7f6f413a041c]


Nikolai
14.05.2018
10:53:49

LeiDruid
14.05.2018
12:15:21
@kochetovnicolai ,
Сейчас в htop вот такая ситуация
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
26088 clickhous 20 0 531G 112G 33184 S 307. 89.0 18h40:48 clickhouse-server --daemon --pid-file=/var/run/clickhouse-server/clickhouse-server.pid --config-file=/etc/clickhouse-server/config.xml
Веб-интерфейс и клиент залипли.
Вроде бы должен был идти мердж
Как прояснить ситуацию?

Nikolai
14.05.2018
12:16:35
в perf top что-нибудь видно?

Google

LeiDruid
14.05.2018
12:16:47
25,80% [kernel] [k] isolate_freepages_block
18,06% clickhouse [.] SpinLock::SlowLock
12,13% [kernel] [k] rcu_irq_exit
18,93% clickhouse [.] SpinLock::SlowLock
14,38% [kernel] [k] isolate_freepages_block
9,31% [kernel] [k] timerqueue_add

Nikolai
14.05.2018
12:18:49
есть предположение, что isolate_freepages_block из-за нехватки памяти
может быть там какой-нибудь запрос съедает все ресурсы?

LeiDruid
14.05.2018
12:19:57
вряд ли, мы смотрели, ничего такого, что могло бы все сожрать
Но был мерж на 100 Гб

Nikolai
14.05.2018
12:20:26
сейчас он завершился?

LeiDruid
14.05.2018
12:20:38
Можно и так сказать - клик упал

Nikolai
14.05.2018
12:21:55
всмысле, упал во время предыдущего мержа? тогда мерж мог назначиться опять

LeiDruid
14.05.2018
12:22:23
Я не мог посмотреть т.к ни один интерфейс не отвечал нормально

Nikolai
14.05.2018
12:22:51
логи тоже нельзя посмотреть?

LeiDruid
14.05.2018
12:23:01
Можно, конечно
2018.05.14 15:19:58.069953 [ 452 ] <Error> executeQuery: Code: 252, e.displayText() = DB::Exception: Too many parts (310). Merges are processing significantly slower than inserts., e.what() = DB::Exception (from 10.55.1.50:57146) (in que
А последними его словами были
2018.05.14 15:20:02.848559 [ 668 ] <Error> SystemLog (system.query_log): SystemLog queue is full
Yj nfrjuj gjkyj d kjut
Но такого полно в логе

Denis
14.05.2018
12:24:29
в таблице merges есть столбец про память, он нормально отображает сколько памяти мерж ест.
select (memory_usage/1024/1024/1024) m,* from system.merges order by m desc

LeiDruid
14.05.2018
12:24:35
И проблема воспроизводится даже с отключенным логированием

Google

Nikolai
14.05.2018
12:26:07

LeiDruid
14.05.2018
12:26:35
Место есть

Maksim
14.05.2018
12:26:43
добрый день, а какие могут быть причины у КХ после рестарта не слушать порт? судя по логам, он активно тащит партиции с других реплик

LeiDruid
14.05.2018
12:26:48
Вставки да, есть частые, но обычно успевает
бОльшую часть данных стараемся вставлять через buffer
У меня есть ощущение, что что-то не так.. НА момент падения базы в tmp_merges было почти полсотни гигабайт.
Вряд ли они оперативно домержились, и при этом новый большой мерж не создался

Nikolai
14.05.2018
12:31:39
да, многовато для куска на 100GB. не вышло так, что мерж съел все место?

LeiDruid
14.05.2018
12:35:41
неа
Контроллирую

prll
14.05.2018
12:50:28


Maksim
14.05.2018
12:53:51
Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
Include not found: networks
message repeated 3 times: [ Include not found: networks]
Couldn't save preprocessed config to /etc/clickhouse-server/config-preprocessed.xml: Access to file denied: /etc/clickhouse-server/config-preprocessed.xml
Logging trace to /var/log/clickhouse-server/clickhouse-server.log
Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Include not found: networks
message repeated 3 times: [ Include not found: networks]
Couldn't save preprocessed config to /etc/clickhouse-server/users-preprocessed.xml: Access to file denied: /etc/clickhouse-server/users-preprocessed.xml
в логах много ZooKeeperImpl::Exception: Session expired (Session expired) но началось сильно давно
пока больше ничего выдающегося не выловил


prll
14.05.2018
12:55:49
похоже что загружает базы и таблицы и до слушания портов еще дело не дошло
а zookeeper жив? версия clickhouse какая?

LeiDruid
14.05.2018
12:56:47

Maksim
14.05.2018
12:56:49
жив, соседняя реплика рестарт переживает, версия 1.1.54343

LeiDruid
14.05.2018
12:57:16
Как подстраховаться? Может, какие-то метрики подмониторить до момента, пока интерфейсы не залипнут ?

Google

prll
14.05.2018
12:58:02
сервер еще не запустился и не начала принимать запросы - обычные метрики снять нельзя
можно попроьовать снять трейс gdb -
sudo gdb -p $(pidof -s clickhouse-server) -batch -ex 'set pagination off' -ex 'thread apply all backtrace' -ex 'detach' -ex 'quit' > trace.log

LeiDruid
14.05.2018
13:16:07
Какова в КХ логика потребления памяти?
https://i.gyazo.com/0b263bf3839a312041ac4c9a503714d0.png
Почему мелки запросы хотят по 3 Гб, а мерж на 100 Гб - 18 Мб?

Sultan
14.05.2018
13:20:42
Подскажите, пожалуйста, как в ClickHouse отфильтровать данные по полю srcaddr (ipv4), входящие в сеть, например, 10.1.1.192/27? А не входящие в сеть?
Какой тип хранения данных для этой задачи оптимальный?

Konstantin
14.05.2018
13:23:59

Sultan
14.05.2018
13:28:21
Большое спасибо!

LeiDruid
14.05.2018
13:28:29
@kochetovnicolai Вот прямо сейчас проблема наблюдается: залипли все интерфейсы, растет потребление памяти, свободное место имеется
в iotop ничего страшного

Nikolai
14.05.2018
13:31:02
у меня все-таки есть подозрения, что это какой-то запрос требует много памяти. можно попробовать по логам понять, какой именно.еще может быть так, что данные на диске побились, и, например, идет попытка аллоцировать строку огромного размера.

LeiDruid
14.05.2018
13:31:05
Такое ощущение, что часть тредов ещё худо-бедно работает
сейчас топ выглядит так:
18,17% clickhouse [.] SpinLock::SlowLock
18,15% clickhouse [.] tcmalloc::PageHeap::AllocLarge
12,16% [kernel] [k] deactivate_task
9,91% clickhouse [.] LZ4_decompress_fast
9,31% clickhouse [.] std::_Rb_tree_insert_and_rebalance


Michal
14.05.2018
13:38:23
Сегодня потратил пару часов на кейс с PREWHERE vs WHERE и optimize_move_to_prewhere. Обычно оптимизатор при небольших условиях и большом количестве колонок благополучно перебрасывает условия из WHERE в PREWHERE. Сегодня наткнулся на кейс: если колонка по которой выполняется WHERE входит в PK (даже если на самом конце PK) то оптимизатор оставляет её в WHERE чем может сильно замедлять селект. Думаю вот теперь - это баг или фичер :) Тут пример: https://gist.github.com/filimonov/dd62b964cf3692ef272f3bc479ef50fe

Nikolai
14.05.2018
13:40:57

LeiDruid
14.05.2018
13:43:32
При этом вот этот большой мерж использует 19638304 памяти

Kirill
14.05.2018
13:48:56

Nikolai
14.05.2018
13:50:25

LeiDruid
14.05.2018
13:53:44

Google

Nikolai
14.05.2018
13:56:03
max_bytes_to_merge_at_max_space_in_pool - максимальный возможный размер куска
эту настройку можно изменить в секции merge_tree_settings
по умолчанию она 150 * 1024 * 1024 * 1024

LeiDruid
14.05.2018
13:57:19
Это не повлияет на уже смерженные куски ?

Nikolai
14.05.2018
14:03:11
нет

LeiDruid
14.05.2018
14:37:49
А можно как-нибудь, теоретически, повлиять на скорость мержа? Ну там приоритет поднять или ещё как ?

Nikolai
14.05.2018
14:47:50

LeiDruid
14.05.2018
14:48:16

Stas
14.05.2018
15:02:00
господа, подскажите по odbc драйверу, он читает типы и int и datetime и date, но не читает string

prll
14.05.2018
15:03:55
что значит не читает? какой запрос и откуда сделан?

Stas
14.05.2018
15:05:24

sic transit
14.05.2018
15:40:42
Есть ли ограничения на использование сильно денормализованных данных, когда на одну и ту же дату/время приходится множество одинаковых/мало отличающихся записей?

Michal
14.05.2018
15:48:47

sic transit
14.05.2018
15:50:54

Michal
14.05.2018
15:51:58
Единственное ограничение которое в голову приходит - если вы сделаете 2 _абсолютно_ идентичных инсерта (количество сктрок и все значения будут совпадать) в реплицируемую таблицу, то второй инсерт будет отброшен как дубликат.

GithubReleases
14.05.2018
19:43:00
yandex/ClickHouse was tagged: v1.1.54381-stable
Link: https://github.com/yandex/ClickHouse/releases/tag/v1.1.54381-stable
Release notes:
v1.1.54381-stable

Александр
14.05.2018
19:48:25
Ребят, а в новой версии пофикшена регрессия с подзапросами?
Что бы понятно было о чем идет речь
Есть регрессия производительности при анализе запросов с большим количеством подзапросов в FROM. Я имел её ввиду ещё когда готовил релиз, но решил что это пока не очень важно, так как она начинает иметь значение на цепочках из хотя бы десятков подзапросов. Исправить можно.

Egor
14.05.2018
19:57:11
привет. подскажите пожалуйста, в дефолтном конфиге <macros incl="macros" optional="true" />
значит ли это, что если я создам в /etc/clickhouse-server/macros.xml, то он подключится?

Maksim
14.05.2018
20:15:29
Нет