欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

使用 sysbench 0.5 测试 MySQL 的性能

程序员文章站 2022-06-06 18:25:55
...

鉴于最近对OpenStack的兴趣和激情,我想要确保我可以做恰当的系统性能评估。我主要开始转向sysbench,是因为它带来一系列丰富的针

鉴于最近对OpenStack的兴趣和激情,我想要确保我可以做恰当的系统性能评估。我主要开始转向sysbench,,是因为它带来一系列丰富的针对不同层面的测试(通过 -test=option 来获知),包括有:

  • fileio - 文件 I/O测试

  • cpu - CPU系能测试

  • memory - 内存功能速度测试

  • threads - 线程子系统系能测试

  • mutex - 互斥性能测试

  • 正如你所看到的的,sysbench将让你的心思着重放在你的硬件和基础架构的许多基础组件上,例如你的磁盘子系统,以及你的CPUs和内存。有一个额外的选项,是用来执行对MySQL的模拟压力测试,并且当我在0.5版本中没有看到以上的所提到的可支持测试项时候,我很惊讶,尽管它可以用来显示“联机事务处理 – 联机事务处理测试”。-test=oltp到底怎么回事??

    这个列表来自于sysbench最近的发布版本0.5——如果你仅仅是在这个版本上使用它,使用 Frederic Descamps(感谢lefred!)所提供的 包。

    包下载地址:

    ------------------------------------------分割线------------------------------------------

    免费下载地址在

    用户名与密码都是

    具体下载目录在 /2014年资料/9月/6日/使用 sysbench 0.5 测试 MySQL 的性能

    下载方法见

    ------------------------------------------分割线------------------------------------------

    如果你用的(系统)是EPEL,Ubuntu 14.04 或者 Debian 7,就可以使用0.4.12版本(检查sysbench的版本 -version)。那么,测试类型OLTP再也不会出现。这个版本做了什么呢?我使劲挠头,直到我询问Percona IRC才知道在0.5版本里的标准OLTP测试类型被替换成了不一样的语法,它使用传递参数到sysbench,替换掉了引用脚本写入lua的方式。它的优点是,现在你有了一个接口,可以写入你特定的负载测试中(提供你了解的lua(接口),用起来也不难)。如果你还想要运行预定义负载测试,它们还是存在的,但是你必须把它们作为RPM的一部分去安装,或者直接拷贝到你的系统。

    幸运的是,如果你使用lefred提供的包,你会发现下面这些lua脚本(这里使用了截止至2014年8月4号的Amazon ami):

    [root@pxc-control ~]# ls -l /usr/share/doc/sysbench/tests/db/
    total 44
    -rw-r--r-- 1 root root 3585 Sep 7 2012 common.lua
    -rw-r--r-- 1 root root 340 Sep 7 2012 delete.lua
    -rw-r--r-- 1 root root 830 Sep 7 2012 insert.lua
    -rw-r--r-- 1 root root 2925 Sep 7 2012 oltp.lua
    -rw-r--r-- 1 root root 342 Sep 7 2012 oltp_simple.lua
    -rw-r--r-- 1 root root 425 Sep 7 2012 parallel_prepare.lua
    -rw-r--r-- 1 root root 343 Sep 7 2012 select.lua
    -rw-r--r-- 1 root root 3964 Sep 7 2012 select_random_points.lua
    -rw-r--r-- 1 root root 4066 Sep 7 2012 select_random_ranges.lua
    -rw-r--r-- 1 root root 343 Sep 7 2012 update_index.lua
    -rw-r--r-- 1 root root 552 Sep 7 2012 update_non_index.lua

    所以诀窍(如果你希望这么叫它)不是通过单一词语传递--test指令,而是通过传递一个lua脚本的完整路径。

    下面首先是旧的方式(sysbench 0.4.12来自EPEL库):

    --test=oltp --oltp-test-mode=complex

    下面是新的方式(sysbench 0.5):

    --test=/usr/share/doc/sysbench/tests/db/insert.lua

    下面是我在一个3个节点的PXC集群上跑haproxy,做一个仅插入的测试类型,下面是我传递给sysbench的全部命令:

    [root@pxc-control ~]# cat sys_haproxy.sh
    #!/bin/bash
    sysbench
    --test=/usr/share/doc/sysbench/tests/db/insert.lua
    --mysql-host=pxc-control
    --mysql-port=9999
    --mysql-user=sysbench-haproxy
    --mysql-password=sysbench-haproxy
    --mysql-db=sbtest
    --mysql-table-type=innodb
    --oltp-test-mode=complex
    --oltp-read-only=off
    --oltp-reconnect=on
    --oltp-table-size=1000000
    --max-requests=100000000
    --num-threads=3
    --report-interval=1
    --report-checkpoints=10
    --tx-rate=24
    $1

    更多详情见请继续阅读下一页的精彩内容:

    使用 sysbench 0.5 测试 MySQL 的性能