ydb-platform / ydb

YDB is an open source Distributed SQL Database that combines high availability and scalability with strong consistency and ACID transactions
https://ydb.tech
Apache License 2.0
3.71k stars 507 forks source link

Нагрузочные кластера падают по OMM #6385

Closed iddqdex closed 1 week ago

iddqdex commented 2 weeks ago

Обнаружена утечка mmap во время выполнения запросов.

Есть большое подозрение на yql. Причины следующие: 1) Течет mmap, не tc_malloc 2) Утечка сильно зависит от запроса. На стрельбах clickbench течет сильно, на tpch - слабо или совсем нет. Внутри кликбенча так (не все запросы проверил): Не текут:

-- q00
SELECT COUNT(*) FROM {table};
-- q01
SELECT COUNT(*) FROM {table} WHERE AdvEngineID <> 0;
-- q02
SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM {table};
-- q03
SELECT AVG(UserID) FROM {table};

Текут:

-- q04
SELECT COUNT(DISTINCT UserID) FROM {table};
-- q05
SELECT COUNT(DISTINCT SearchPhrase) FROM {table};

Сильно течёт:

-- q16
SELECT UserID, SearchPhrase, COUNT(*) as cnt FROM {table} GROUP BY UserID, SearchPhrase ORDER BY cnt DESC LIMIT 10;

То есть текут те запросы, где много ответов до лимита.

Есть ещё /proc/xxx/maps/: https://paste.yandex-team.ru/109737a6-3a7e-420b-b241-21a5415ae38a

iddqdex commented 2 weeks ago

Работаем с @vitstn: https://a.yandex-team.ru/arcadia/contrib/ydb/library/yql/minikql/aligned_page_pool.cpp?rev=r14360945#L564

https://a.yandex-team.ru/arcadia/contrib/ydb/library/yql/minikql/aligned_page_pool.cpp?rev=r14360945#L602

ну может там конечно баг, поставь в этих точках трассировку

это обычные per process free lists

iddqdex commented 1 week ago

Починили тут: https://github.com/ydb-platform/ydb/commit/8c6ee313319e101151d5d233811a266a805bdb03