2022-08-26 17:37:11 +00:00
---
slug: /ru/operations/system-tables/stack_trace
---
2020-08-06 08:50:29 +00:00
# system.stack_trace {#system-tables_stack_trace}
Содержит трассировки стека всех серверных потоков. Позволяет разработчикам анализировать состояние сервера.
Для анализа логов используйте [функции интроспекции ](../../sql-reference/functions/introspection.md ): `addressToLine` , `addressToSymbol` и `demangle` .
Столбцы:
2021-05-25 21:39:34 +00:00
- `thread_name` ([String](../../sql-reference/data-types/string.md)) — имя потока.
- `thread_id` ([UInt64](../../sql-reference/data-types/int-uint.md)) — идентификатор потока.
- `query_id` ([String](../../sql-reference/data-types/string.md)) — идентификатор запроса. Может быть использован для получения подробной информации о выполненном запросе из системной таблицы [query_log ](#system_tables-query_log ).
- `trace` ([Array(UInt64)](../../sql-reference/data-types/array.md)) — [трассировка стека ](https://en.wikipedia.org/wiki/Stack_trace ). Представляет собой список физических адресов, по которым расположены вызываемые методы.
2020-08-06 08:50:29 +00:00
**Пример**
Включение функций интроспекции:
``` sql
SET allow_introspection_functions = 1;
```
Получение символов из объектных файлов ClickHouse:
``` sql
2021-05-25 21:39:34 +00:00
WITH arrayMap(x -> demangle(addressToSymbol(x)), trace) AS all SELECT thread_name, thread_id, query_id, arrayStringConcat(all, '\n') AS res FROM system.stack_trace LIMIT 1 \G;
2020-08-06 08:50:29 +00:00
```
``` text
Row 1:
──────
2023-11-06 18:43:17 +00:00
thread_name: QueryPipelineEx
thread_id: 743490
query_id: dc55a564-febb-4e37-95bb-090ef182c6f1
res: memcpy
large_ralloc
arena_ralloc
do_rallocx
Allocator< true , true > ::realloc(void*, unsigned long, unsigned long, unsigned long)
HashTable< unsigned long , HashMapCell < unsigned long , char * , HashCRC32 < unsigned long > , HashTableNoState, PairNoInit< unsigned long , char * > >, HashCRC32< unsigned long > , HashTableGrowerWithPrecalculation< 8ul > , Allocator< true , true > >::resize(unsigned long, unsigned long)
void DB::Aggregator::executeImplBatch< false , false , true , DB::AggregationMethodOneNumber < unsigned long , HashMapTable < unsigned long , HashMapCell < unsigned long , char * , HashCRC32 < unsigned long > , HashTableNoState, PairNoInit< unsigned long , char * > >, HashCRC32< unsigned long > , HashTableGrowerWithPrecalculation< 8ul > , Allocator< true , true > >, true, false>>(DB::AggregationMethodOneNumber< unsigned long , HashMapTable < unsigned long , HashMapCell < unsigned long , char * , HashCRC32 < unsigned long > , HashTableNoState, PairNoInit< unsigned long , char * > >, HashCRC32< unsigned long > , HashTableGrowerWithPrecalculation< 8ul > , Allocator< true , true > >, true, false>& , DB::AggregationMethodOneNumber< unsigned long , HashMapTable < unsigned long , HashMapCell < unsigned long , char * , HashCRC32 < unsigned long > , HashTableNoState, PairNoInit< unsigned long , char * > >, HashCRC32< unsigned long > , HashTableGrowerWithPrecalculation< 8ul > , Allocator< true , true > >, true, false>::State& , DB::Arena*, unsigned long, unsigned long, DB::Aggregator::AggregateFunctionInstruction*, bool, char*) const
DB::Aggregator::executeImpl(DB::AggregatedDataVariants& , unsigned long, unsigned long, std::__1::vector< DB::IColumn const * , std::__1::allocator < DB::IColumn const * > >& , DB::Aggregator::AggregateFunctionInstruction*, bool, bool, char*) const
DB::Aggregator::executeOnBlock(std::__1::vector< COW < DB::IColumn > ::immutable_ptr< DB::IColumn > , std::__1::allocator< COW < DB::IColumn > ::immutable_ptr< DB::IColumn > >>, unsigned long, unsigned long, DB::AggregatedDataVariants& , std::__1::vector< DB::IColumn const * , std::__1::allocator < DB::IColumn const * > >& , std::__1::vector< std::__1::vector < DB::IColumn const * , std::__1::allocator < DB::IColumn const * > >, std::__1::allocator< std::__1::vector < DB::IColumn const * , std::__1::allocator < DB::IColumn const * > >>>& , bool& ) const
DB::AggregatingTransform::work()
DB::ExecutionThreadContext::executeTask()
DB::PipelineExecutor::executeStepImpl(unsigned long, std::__1::atomic< bool > *)
void std::__1::__function::__policy_invoker< void ( ) > ::__call_impl< std::__1::__function::__default_alloc_func < DB::PipelineExecutor::spawnThreads ( ) :: $ _0 , void ( ) > >(std::__1::__function::__policy_storage const*)
ThreadPoolImpl< ThreadFromGlobalPoolImpl < false > >::worker(std::__1::__list_iterator< ThreadFromGlobalPoolImpl < false > , void*>)
void std::__1::__function::__policy_invoker< void ( ) > ::__call_impl< std::__1::__function::__default_alloc_func < ThreadFromGlobalPoolImpl < false > ::ThreadFromGlobalPoolImpl< void ThreadPoolImpl < ThreadFromGlobalPoolImpl < false > >::scheduleImpl< void > (std::__1::function< void ( ) > , Priority, std::__1::optional< unsigned long > , bool)::'lambda0'()>(void& & )::'lambda'(), void ()>>(std::__1::__function::__policy_storage const*)
void* std::__1::__thread_proxy[abi:v15000]< std::__1::tuple < std::__1::unique_ptr < std::__1::__thread_struct , std::__1::default_delete < std::__1::__thread_struct > >, void ThreadPoolImpl< std::__1::thread > ::scheduleImpl< void > (std::__1::function< void ( ) > , Priority, std::__1::optional< unsigned long > , bool)::'lambda0'()>>(void*)
2020-08-06 08:50:29 +00:00
```
Получение имен файлов и номеров строк в исходном коде ClickHouse:
``` sql
2021-05-25 21:39:34 +00:00
WITH arrayMap(x -> addressToLine(x), trace) AS all, arrayFilter(x -> x LIKE '%/dbms/%', all) AS dbms SELECT thread_name, thread_id, query_id, arrayStringConcat(notEmpty(dbms) ? dbms : all, '\n') AS res FROM system.stack_trace LIMIT 1 \G;
2020-08-06 08:50:29 +00:00
```
``` text
Row 1:
──────
2021-05-25 21:39:34 +00:00
thread_name: clickhouse-serv
2021-05-27 17:01:56 +00:00
thread_id: 686
query_id: cad353e7-1c29-4b2e-949f-93e597ab7a54
res: /lib/x86_64-linux-gnu/libc-2.27.so
/build/obj-x86_64-linux-gnu/../src/Storages/System/StorageSystemStackTrace.cpp:182
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/vector:656
/build/obj-x86_64-linux-gnu/../src/Interpreters/InterpreterSelectQuery.cpp:1338
/build/obj-x86_64-linux-gnu/../src/Interpreters/InterpreterSelectQuery.cpp:751
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/optional:224
/build/obj-x86_64-linux-gnu/../src/Interpreters/InterpreterSelectWithUnionQuery.cpp:192
/build/obj-x86_64-linux-gnu/../src/Interpreters/executeQuery.cpp:384
/build/obj-x86_64-linux-gnu/../src/Interpreters/executeQuery.cpp:643
/build/obj-x86_64-linux-gnu/../src/Server/TCPHandler.cpp:251
/build/obj-x86_64-linux-gnu/../src/Server/TCPHandler.cpp:1197
/build/obj-x86_64-linux-gnu/../contrib/poco/Net/src/TCPServerConnection.cpp:57
/build/obj-x86_64-linux-gnu/../contrib/libcxx/include/atomic:856
/build/obj-x86_64-linux-gnu/../contrib/poco/Foundation/include/Poco/Mutex_POSIX.h:59
/build/obj-x86_64-linux-gnu/../contrib/poco/Foundation/include/Poco/AutoPtr.h:223
/lib/x86_64-linux-gnu/libpthread-2.27.so
2020-08-06 08:50:29 +00:00
/lib/x86_64-linux-gnu/libc-2.27.so
```
2021-05-25 21:39:34 +00:00
**Смотрите также**
2020-08-06 08:50:29 +00:00
2021-05-26 19:17:43 +00:00
- [Функции интроспекции ](../../sql-reference/functions/introspection.md ) — описание функций интроспекции и примеры использования.
2021-05-26 19:17:29 +00:00
- [system.trace_log ](../../operations/system-tables/trace_log.md#system_tables-trace_log ) — системная таблица, содержащая трассировки стека, собранные профилировщиком выборочных запросов.
2021-05-25 21:39:34 +00:00
- [arrayMap ](../../sql-reference/functions/array-functions.md#array-map ) — описание и пример использования функции `arrayMap` .
- [arrayFilter ](../../sql-reference/functions/array-functions.md#array-filter ) — описание и пример использования функции `arrayFilter` .