---
title: Sysbench 0.5
description: "需要先修改drv_mysql.c代码以解决高并发下初始化超时的问题，再进行编译和安装。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/testguide/tstg/kunpengsysbench_02_0006.html
sourcePath: /source/zh/kunpengdbs/testguide/tstg/kunpengsysbench_02_0006.html
indexId: 89884f31db9305ea2f9775bbb49d7150b2b0bbb18e8dc1a46eccfbfb74bf7aa465
---
# Sysbench 0.5

需要先修改drv_mysql.c代码以解决高并发下初始化超时的问题，再进行编译和安装。

1. 修改drv_mysql.c代码。
修改drv_mysql.c代码，以解决在MIX场景512个并发线程时初始化超时的问题，该问题报错为：

```
FATAL: Worker threads failed to initialize within 30 seconds!
```

具体做法是在client发起连接时增加一个timeout参数，使连接超时得以返回，然后重新发起连接。这样就能够避免初始化超时的问题，保证程序的正常运行。


  a. 打开drv_mysql.c文件。
    1 vi /home/sysbench-0.5/sysbench/drivers/mysql/drv_mysql.c

  b. 在mysql_drv_real_connect函数末尾找到“return mysql_real_connect(....) == NULL;”。
  c. 按“i”进入编辑模式，并将“return mysql_real_connect(....) == NULL;”这段代码替换为如下内容。
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 #if 0 return mysql_real_connect(con, db_mysql_con->host, db_mysql_con->user, db_mysql_con->password, db_mysql_con->db, db_mysql_con->port, db_mysql_con->socket, #if MYSQL_VERSION_ID >= 50000 CLIENT_MULTI_STATEMENTS #else 0 #endif ) == NULL; #else unsigned int timeout = 5; if (mysql_options(con, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&timeout)) { DEBUG("0x%p mysql_options MYSQL_OPT_CONNECT_TIMEOUT failed", con); } int ret = 0; int i = 0; for (; i < 5; i++) { ret = (mysql_real_connect(con, db_mysql_con->host, db_mysql_con->user, db_mysql_con->password, db_mysql_con->db, db_mysql_con->port, db_mysql_con->socket, #if MYSQL_VERSION_ID >= 50000 CLIENT_MULTI_STATEMENTS #else 0 #endif ) == NULL); if (ret == 0) { DEBUG("0x%p mysql_options succeed", con); break; } DEBUG("0x%p mysql_options MYSQL_OPT_CONNECT_TIMEOUT timeout", con); usleep(1000); } return ret; #endif

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
2. 进入Sysbench源码所在目录。
  1 cd /home/sysbench-0.5

3. 编译和安装。
  1 2 3 4 ./autogen.sh ./configure make -j128 make -j128 install

  编译命令参数-j后面的数字表示您需要同时进行并行编译的CPU核数，此数值应设置为小于或等于CPU核数。您可以使用以下命令查看CPU核数： 1 cat /proc/cpuinfo | grep processor | wc -l

4. 查看Sysbench版本。
  1 sysbench --version

  预期结果显示为：

  1 sysbench 0.5
