tidb-server 内存占用过高时的报警

【 TiDB 使用环境】生产环境
【 TiDB 版本】v5.3.4
【复现路径】无
【遇到的问题:问题现象及影响】只有4台物理机,每台300G内存,混合部署了tidb,tikv,pd,给tidb-server设置的内存是64G,出现问题时,3个tidb-server几乎同时宕机,var/log/message里有oom-killer,但是tidb.log没有oom-killer日志。如何修改默认设置,让tidb-server在内存使用量达到 <实例内存> 限制的80%时就触发报警,记录 goroutinueheaprunning_sql等信息?

你不是找到需要修改的参数了吗 ? 还有什么问题吗

默认配置下,tidb-server 实例会在机器内存(机器内存是300G)使用达到总内存量的 80% 时打印报警日志,并记录相关日志文件。
我想让tidb-server 实例在使用达到“实例内存"(tidb-server设置的内存是64G)的 80% 时打印报警日志,并记录相关日志文件。请问有办法吗?

https://docs.pingcap.com/zh/tidb/v5.4/tidb-configuration-file#memory-usage-alarm-ratio-从-v409-版本开始引入

  • 当内存阈值报警功能开启时,如果配置项 server-memory-quota 未设置,则内存报警阈值为 memory-usage-alarm-ratio * 系统内存大小;如果 server-memory-quota 被设置且大于 0,则内存报警阈值为 memory-usage-alarm-ratio * server-memory-quota
    你先将tidb-server的server-memory-quota设置一下啊

如果 server-memory-quota 被设置且大于 0,则内存报警阈值为 memory-usage-alarm-ratio * server-memory-quota
那你现在应该就是这样啊,是没报警吗?

64G*0.8=51.2g内存 你设置成300的百分17 不就好了吗

请问server-memory-quota这个参数可以在5.3.4版本的生产环境中设置吗?有没有什么问题?

因为是混合部署的,不知道会不会由于tikv,或其他组件占用了内存,让tidb一直记录日志,和 goroutinueheaprunning_sql也不太好吧

官方文档有详细的说明,你看看
https://docs.pingcap.com/zh/tidb/v5.4/configure-memory-usage


请问有没有人在生产中碰到过有关server-memory-quota引起的问题啊?收集点经验

你升级版本到6.4 就能用系统变量 tidb_server_memory_limit设置tidb的最大使用内存了,百分比和具体大小都可以设置

1 个赞

mem-quota-query 参数,该参数用于限制单个查询的内存使用量。你可以根据实际情况调整该参数的值,以控制单个查询的内存占用。