# [FAQ] 如何定位 tidb_query_log_max_len 设置高，导致 TiDB Server 内存使用率异常升高

## Key Words

TiDB, tidb_query_log_max_len, CoprocessorHandlerDAG, GetOneLine

## Description

通过 Grafana 监控看到 TiDB Server 的内存使用率异常升高，通过 Slow query 和 SQL statement 没有看到异常的大查询或者正在执行中的大查询。业务请求没有出现变更或者上线，内存发生告警后第一时间通过 `curl http://{TiDBIP}:10080/debug/zip?seconds=60 --output debug.zip` 抓取 TiDB Sever 的 PProf 用于分析当前内存占用问题。

## Content

根据提供的 heap 查看内存占用情况，主要两个大部分，部分是 Executor 抓取 slow query log 存储到 TiDB 内存中，另外一部分就是读取 TiDB 内存表。两个动作都需要内存占用。

CoprocessorHandlerDAG 是 TiDB 和 TiKV 进行 Cop 读请求处理模块，TiDB 内存表读取也沿用这部分逻辑，来读取内存表。 <https://github.com/pingcap/tidb/pull/13065>

GetOneLine 是 TiDB Executor 层用来收集 slow query 的任务，主要是将 slow query log 存储到内存中。 <https://github.com/pingcap/tidb/blob/master/executor/slow_query.go#L249-L278>

由此判断 tidb_query_log_max_len 配置可能存在异常配置，默认 4k 不会出现类似问题，通过 TiDB 配置文件配置发现已配置 40k 是导致 TiDB 内存上涨的直接原因。

## Affected Versions

N/A
