首页 > 代码库 > mysql压力测试

mysql压力测试

1,使用 mysqlslap  进行压力测试

mysqlslap  --defaults-file=/etc/my.cnf --concurrency=200 --iterations=1 --number-int-cols=1 --auto-generate-sql --auto-generate-sql-load-type=write --engine=myisam,innodb --number-of-queries=200 -S/home/mysql/mysql.sock  --debug-info  -uroot -p123


下面我们就来看看一些比较重要的参数:

--defaults-file,配置文件存放位置
--create-schema,测试的schema,MySQL中schema也就是database
--concurrency,并发数
--engines,测试引擎,可以有多个,用分隔符隔开。
--iterations,迭代的实验次数
--socket,socket,文件位置
--debug-info,打印内存和CPU的信息
--only-print,只打印测试语句而不实际执行

--auto-generate-sql,自动产生测试SQL
--auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。
--number-of-queries,执行的SQL总数量
--number-int-cols,表内int列的数量
--number-char-cols,表内char列的数量
--query=name,使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。


指定数据库的测试:
--create-schema,指定数据库名称
--query,     指定SQL语句,可以定位到某个包含SQL的文件

例如:

[root@localhost ~]# /usr/local/mysql/bin/mysqlslap --defaults-file=/etc/my.cnf --concurrency=50 --iterations=1 --create-schema=test --query=/root/test.sql -S/tmp/mysql.sock -uroot -p123


对MySQL进行并发测试过程中遇到的一个小问题,记录一下。

用mysqlslap进行并发访问测试,在1024线程的时候报错:

bin/mysqlslap: Error when connecting to server: 1135 Can‘t create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

Linux系统的open files数已经修改。当然仍然报错。ulimit -a命令,可查看当前系统限制情况

max user processes = 1024


通过ulimit -u 10000命令修改当前session的限制值,然后重启MySQL,问题解决。如果你想使此值永久生效,可配置在/etc/profile 中。