sysbench压测tidb提示报错

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

  • 【TiDB 版本】:v4.0.0
  • 【问题描述】:sysbench 压测 tidb 提示
    $ sysbench --config-file=config oltp_insert --tables=32 --table-size=10000000 run
    sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 3072
Report intermediate results every 10 second(s)
Initializing random number generator from current time

Initializing worker threads…

Threads started!

[ 10s ] thds: 3072 tps: 29430.65 qps: 29430.65 (r/w/o: 0.00/29430.65/0.00) lat (ms,95%): 223.34 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 3072 tps: 25515.20 qps: 25515.30 (r/w/o: 0.00/25515.30/0.00) lat (ms,95%): 314.45 err/s: 0.00 reconn/s: 0.00
FATAL: `thread_run’ function failed: not enough memory
Error in my_thread_global_end(): 1 threads didn’t exit
Mon Jul 6 11:10:38 CST 2020

sysbench config 线程数 3072
threads=3072

初步判定为 sysbench 使用 线程数过高 来压测tidb 导致的问题, 需要对 tidb 或者 sysbench 所在服务器参数进行调优

sysbench 压测看下当前服务器有多少个 cpu,线程数可以根据其进行设置,此检测时 sysbench 的检测机制,所以需要降低线程数或者提高服务器配置继续进行

sysbench 服务器配置为 16核心 32G内存, 需要增加cpu核心数吗?

  1. 查看线程数量
 grep "processor" /proc/cpuinfo | sort -u | wc -l

在sysbench的测试中,–num-threads取值为”线程数量”即可,再大的值没有什么意义,对测试结果也没有什么影响。

[tidb@ecs-858b ~/sysbench] $ grep “processor” /proc/cpuinfo | sort -u | wc -l
32

[tidb@ecs-858b ~/sysbench] $ grep threads config
threads=3000

实际是有意义的哦, threads 值越大, 测出来的 tps/qps 越大

单纯的服务器的压力测试并不建议,建议结合业务惊醒 poc 测试,当前问题可以找下 sysbench 社区,看是否在此服务器下可以进行 3000 的线程数的测试。

tidb 这边的压测可以看下文档中的介绍,看是否有参考价值:

好的, 感谢建议和文章分享

OK,

你好, 我现在针对上述报错 有一个tidb 调优方向, 就是增加 tidb 最大连接数, 请问是不是调整如下参数呢? 具体写入配置的格式是?
token-limit

部署方式不同修改参数的方式不同,可以在文档中找一下。

好难找哦 能否提供一下url呢 :disappointed_relieved:

请问时如何搜索但是搜索不到的呢?可以反馈下,我们优化下文档结构。
PS:在部署 tidb 的文档中和扩容文档中可以找到。