Home  >  Article  >  Database  >  MySQL压力测试shell脚本

MySQL压力测试shell脚本

WBOY
WBOYOriginal
2016-06-07 17:27:21978browse

MySQL自带了压力测试工具mysqlslap,所以我们可以不用自己编写程序来测试Mysql读取的压力。

MySQL自带了压力测试工具mysqlslap,所以我们可以不用自己编写程序来测试Mysql读取的压力。压力测试shell脚本如下:

#!/bin/sh
while true
do
    mysqlslap --concurrency=100 --iterations=10 --create-schema='test' --query="insert into test(c1,c2,c3,c4) values(1,1,1,'a')" --number-of-queries=200 --debug-info -uroot -p123456
    usleep 100
done
上面脚本的意思是每隔100ms循环做这样的事:模拟100个mysql客户端,,对数据库test的表test执行200次插入(number-of-queries = concurrency * 每个mysql客户端的查询次数,所以这里的每个mysql客户端的查询次数是2次),迭代10次。--debug-info是打印内存和CPU的相关信息。

接着我们可以编写shell脚本来输出指定时间间隔(比如1秒)内的mysql操作次数,shell脚本如下:

#!/bin/sh

lastTimes="0"

while true
do
    currentTimes=$(mysql -uroot -p'123456' -e "show global status like 'Com_insert'" | sed '1d' | awk '{print $2}')
    times=$(expr ${currentTimes} - ${lastTimes})
    lastTimes="${currentTimes}"
    echo "${times}"
    sleep 1
done
查看mysql各种操作的次数,可以通过查看global status里的'Com_'开头的变量,它们就是mysql的操作命令,比如Com_insert就是插入命令、Com_update就是更新命令,等等,具体可以查看文档说明。将相邻两次的次数相减,就得到这个时间间隔内执行的次数。

PS:除了iostat等命令外,也可以通过top命令来查看io的负载(看wait的百分比,如果大于等于 1 / cpu核数,则说明硬盘IO有问题)。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn