调研:业界TiDB OOM如何管理的

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1.0
大家如何管理的OOM,生产环境实施了哪些预防手段。

我司管理方案:
配置信息

  • tidb层面单条SQL限制总内存的1/4;
  • tikv层面限制总内存75%左右;
  • pd未限制;
  • ticdc未限制;
  • tiflash 单条sql限制70%,总内存限制80%;

运维管理
在tidb层面给统计报表、离线任务单独配置tidb-server,即使挂掉也不会导致在线业务中断;

案例1:

案例2:

案例3:

6.5.x
7.x
之后,oom 的概率降低了很多

1 个赞

是的,升级之后,内存释放特别积极,概率大概降低非常多

拆分业务,点查点写。分离业务和分析,分别独立集群,分析集群允许OOM。

2 个赞

1.建议升级版本,tidb版本到 6.5或7.x之后
2.实时库和业务库分离。必要资源挤压,7.5的资源管控功能目前未实践过
3.监控top sql,及时优化调整

我感觉还好,oom参数默认1g,实例没那么容易oom

在业务上线前做好设计和验证,使用中注意执行计划监控,一般可以很好控制内存使用

不要把全部计算扔给数据库,适当的用应用来做,应用无状态可以随时增加资源

做资源限制,sql的尽量限制,同时用完后尽量把资源释放

评估数据量和一个sql执行占用的内存,把占用内存大的挑出来看看能不能优化,拆分

调整 TiDB 的配置参数以适应您的应用程序负载。例如,idb_mem_quota_query和 tidb_mem_quota_hashjoin控制 TiDB 用于查询和哈希连接的内存配额,可以进行适当调整以减少内存使用。升级最新版本也可以改善这个问题,另外就是应用的优化了。

1 个赞

sql尽量限制一下,做好优化

做好开发人员培训,根据自身环境和业务逻辑,给出优化的开发建议。

说到底还是sql本身的优化