如何提升tidb server节点的内存使用率

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】
【操作系统】
【部署方式】云上部署(什么云)/机器部署(什么机器配置、什么硬盘)
【集群数据量】
【集群节点数】
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
【其他附件:截图/日志/监控】

目前是3节点tikv,两个节点的tidbserver,tidb,pd,tikv单独部署。现在遇到的情况是,tidbserver节点内存使用只有百分之10,tidb的cpu到百分之80的时候内存都不涨,如何提升tidbserver节点的内存使用?现在并发比较大,sql的缓存命中几乎全是百分之0.配置参数几乎都是默认的情况下,如何修改能实现提升tidbserver的内存使用率,还有能提升缓存命中。
目前tidb_server_memory_limit=‘85%’
tidb_mem_quota_query=1GB

tidb节点内存和有没有多表join关系比较大,没啥join的简单查询并不太消耗内存

tidb_mem_quota_query=1GB,调大查询内存配额试一下

tidb的cpu到百分之80

80% 是机器整体负载吗,还是使用了单核的80% ? 如果只用了单核的80%,内存使用率上不去应该也正常。

tidb_mem_quota_query 是限制单条sql内存使用率,如果执行sql返回下面这个错误,才需要调大tidb_mem_quota_query 。

Your query has been cancelled due to exceeding the allowed memory limit for a single SQL query. Please try narrowing your query scope or increase the tidb_mem_quota_query limit and try again.

1 个赞

是整体百分之80,所以很奇怪,cpu整体快打满了,内存才百分之10

调整没反应,他是并发比较大,也不是特别大的那种,单个sql占用内存小

并发高,整体延迟变高了吗
sql的缓存命中率是怎么看的?

还来一段English?

join in 查询

各种merge

各种sort排序

各种sort, join操作起来

tidb server 内存使用不高是好事,这是正常的情况

提升tidbserver的内存使用率,还有能提升缓存命中。

一般 tidb server 是不做数据缓存的(除了有个 cop cache),因为 tidb 是分布式的一个架构,tidb server 节点都是无状态的,如果直接缓存数据,一个 tidb 节点更新数据后,还涉及到另一个节点同步的问题, tikv 提供了 block cache 缓存数据

调大tidb_plan_cache_size 提升执行计划缓存命中率