使用sysbench对TiDB集群进行压测,报“FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'INSERT INTO sbtest9(k, c, pad) VALUES(...”错误

【 TiDB 使用环境】测试环境

  • PD 3台:16G32G
  • TiDB 3台:16C32G
  • TiFlash 3台:16C32G
  • TiKV 20台:16C32G

【 TiDB 版本】v 6.1.0

【复现路径】使用 sysbench 对TiDB数据库进行压力测试

  • sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host= --mysql-port=4000 --mysql-user= --mysql-password= --mysql-db=test --tables=10 --table_size=1000000 oltp_read_write prepare

【遇到的问题:问题现象及影响】

  • 背景:为了评估集群性能,所以使用 sysbench 对TiDB集群继续压力测试,生成10个表,每张表生成1亿条数据。

  • 现象:prepare阶段报错,FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'INSERT INTO sbtest9(k, c, pad) VALUES(50300166, '16357275439-41970985209-34833281730-07150732211-32256237037-94842996031-08714086735-83899234046-58786808990-64628079874', '79244697413-69968263748-31322533223-94195053462-84736177096') (...中略) FATAL: 'sysbench.cmdline.call_command' function failed: /usr/share/sysbench/oltp_common.lua:230: db_bulk_insert_next() failed
    之后中断Prepare阶段。

  • 调查成果:

    • 使用select count(*) from test.sbtest<id>的当时查询各个测试表发现插入数据量在4.5kw~5kw条左右,只有期望插入数据量的一半不到

    • 使用show variables like '%timeout'得到结果如下:
      image

做了资源隔离了么?别发生 OOM 了

失去连接了,tidb重启了吧?

服务器上除了操作系统本身,就只跑了TiDB相关的节点,每个节点都是单独的虚拟机,没有观察到OOM相关的错误,集群除了OLTP的任务以外,也没有执行其他任务。请问应该如何确认是否发生了OOM呢?

TiDB没有重启,我用Navicat连接和查询都是正常的,但是sysbench的prepare任务是中断了的

做了负载均衡了吗?还是只访问了一个tidb节点?

数据准备到一半,服务器断连了,要不是too many open file的限制,那就是tidb服务器挂了,看看对应的日志。

tiup cluster display 集群名看一下是不是tidb-server是不是oom重启了。。。