[xml] view plaincopy
当然了,用上面的参数编译的话,就要确保你的 MySQL lib目录下有对应的 so 文件,如果没有,可以自己下载 devel 或者 share 包来安装。
注意,因为本服务器是静态编译安装,无法正常安装,下载了一个noinstall版本的安装的
另外,如果想要让 sysbench 支持 pgsql/oracle 的话,就需要在编译的时候加上参数
–with-pgsql
或者
–with-oracle
这2个参数默认是关闭的,只有 MySQL 是默认支持的。
二、开始测试
编译成功之后,就要开始测试各种性能了,测试的方法官网网站上也提到一些,但涉及到 OLTP 测试的部分却不够准确。在这里我大致提一下:
1、cpu性能测试
sysbench –test=cpu –cpu-max-prime=20000 run
cpu测试主要是进行素数的加法运算,在上面的例子中,指定了最大的素数为 20000,自己可以根据机器cpu的性能来适当调整数值。
2、线程测试
sysbench –test=threads –num-threads=64 –thread-yields=100 –thread-locks=2 run
3、磁盘IO性能测试
sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw prepare
sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw run
sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw cleanup
上述参数指定了最大创建16个线程,创建的文件总大小为3G,文件读写模式为随机读。
4、内存测试
sysbench –test=memory –memory-block-size=8k –memory-total-size=4G run
上述参数指定了本次测试整个过程是在内存中传输 4G 的数据量,每个 block 大小为 8K。
5、OLTP测试
sysbench –test=oltp –mysql-table-engine=myisam –oltp-table-size=1000000 –mysql-socket=/tmp/mysql.sock –mysql-user=test –mysql-host=localhost –mysql-password=test prepare
上述参数指定了本次测试的表存储引擎类型为 myisam,这里需要注意的是,官方网站上的参数有一处有误,即 –mysql-table-engine,官方网站上写的是 –mysql-table-type,这个应该是没有及时更新导致的。另外,指定了表最大记录数为 1000000,其他参数就很好理解了,主要是指定登录方式。测试 OLTP 时,可以自己先创建数据库 sbtest,或者自己用参数 –mysql-db 来指定其他数据库。–mysql-table-engine 还可以指定为 innodb 等 MySQL 支持的表存储引擎类型。 .
Sysbench 代码sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test --num-threads=4 run Sysbench-install 代码sysbench – Linux test bench. Easy as pie to test CPU, memory, threads, mysql, and disk performance. Full description is available here: http://sysbench.sourceforge.net/docs/ install mysql, mysql-develwget http://superb-west.dl.sourceforge.net/sourceforge/sysbench/sysbench-0.4.8.tar.gztar xvzf sysbench*gzcd sysbench*./configure && make installmysql tests This will run 10 separate consecutive mysql tests using an InnoDB table type, each with 100 mysql threads, doing a total of 1000 various SQL operations per test. Then it will print the total time they took to finish: sysbench --test=oltp --mysql-user=USER --mysql-password=PASS --mysql-db=test --mysql-host='HOST' --mysql-table-engine=innodb prepare time perl -e "foreach(1..10){print \`sysbench --max-requests=1000 --test=oltp --mysql-user=USER --mysql-password=PASS --mysql-db=test --mysql-host='HOST' --mysql-table-engine=innodb --num-threads=100 run\`}" sysbench --test=oltp --mysql-user=USER --mysql-password=PASS --mysql-db=test --mysql-host='HOST' cleanup
联系客服