tidb-server占用内存很高

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

  • 【TiDB 版本】:tidb 4.0
  • 【问题描述】:tidb4.0, 3tikv 3pd,1tidb, 其中1tidb+1tikv+1个pd 放在同一个机器上,机器配置2cpu+8g内存
    自己开发得程序,开10个并发线程,向tidb中insert数据 ,批量3000一提交。 老是tidb链接访问不可用,查看状态,发现tidb服务是down 状态,用dstat -l -m -r -c --top-io --top-mem 命令查看发现tidb-server内存占用情况6372M左右,此时往tidbinsert得程序已经停止,用top命令查看tidb-server占用内存还是6372,没有释放掉,这是因为什么原因呢

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

  1. 建议先满足配置 https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements
  2. 您可以查看下火焰图具体是哪里占用的内存
    curl -G “ip:port/debug/pprof/heap?seconds=30” > heap.profile

有两个疑问1、在不满足配置得情况下,我想问一下tidb-server 内存在什么时候会自动释放内存 2、你说得这个火焰图 怎么打开呢,

  1. 可以使用参考以下方法执行后,再浏览器打开.
  • go tool pprof -http 172.16.4.51:8080 …/profile
  • 172.16.4.51:8080 为 go tool pprof 服务侦听地址 不是 tidb 端口
  1. 通常来说业务访问结束,就可以开始回收内存,我记得 go 会缓存一部分内存,操作系统会自己决定什么时候回收内存。