插入数据经常报out of memory

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

  1. tidb-server 内存是多大?
  2. 上传下tidb监控
  3. 再执行sql时转一下火焰图 curl -G “ip:port/debug/pprof/heap?seconds=30” > heap.profile
    ip地址为tidb服务器的ip,端口为tidb_status_port的端口

tidb 64G 内存,就插入了14万的测试数据,就报这个了

heap (1).profile (76.5 KB)

正在分析,稍等

  1. 请确认下mem-quota-query这个参数是否有设置 (默认1G) 反应的这个错误是单条SQL使用内存过多tidb把它cancel了 和这个参数相关性很大 如果没有设置过 可以尝试调大
  2. 数据数据分布是怎样的 可能这100000条数据所使用的内存就已经超过了1G 并且 insert需要把这些数据都buffer到内存中 我从heap profile的alloc_space中看insert申请了大量的内存
  3. heap profile文件中 inuse_space中只有100MB的统计信息的使用 和SQL执行没有直接关系 应该是SQL在执行30s之内就已经OOM了 麻烦帮忙抓下在OOM之前的heap profile 如果执行20s就OOM了 抓前15s的heap profile回来