- 浏览: 836848 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zjhzwx1212:
为什么用threadLocal后,输出值是从20开始的,而定义 ...
j2ee的线程安全--threadlocal -
aeoluspu:
不错 mysql 测试部分感觉不详细
用sysbench(或者super-smack)测试mysql性能 -
nanPrivate:
有没有例子,只理论,实践起来还是不会啊
JMS可靠消息传送 -
lwclover:
一个网络工程师 装什么b
postfix 如何删除队列中的邮件 -
maimode:
我也欠缺不少啊
理想的计算机科学知识体系
Sysbench是一款流行的开源基准测试工具,用来测试不同操作系统平台即其上数据库的性能。由于我们目前讨论的是MySQL,我将重点讲解数据库测试部分。
Sysbench基准测试在测试OLTP时,先生成一张表,然后再运行一组查询命令。默认情况下,表中每一行数据约为250字节,并创建100行。根据我的经验,我 们创建1000万行。Allan有一篇关系测试细节的博客(http://blogs.sun.com/allanp/entry/tuning_mysql_on_linux)。
在此,我将从另外一个角度来介绍我们的测试。
使测试获得好得数据,这其实非常简单:
1 最大化CPU利用率
2 减少由于IO造成的延迟
最大化CPU利用率
提
高资源利用率,对于获得最佳的测试性能非常重要。如果你拥有一台多核机器(现在很多机器都已经是多核),你需要并行执行多个线程,从而使系统中所有的核都
得到利用
。Sysbench通过--number-threads变量来确定内核数量。根据经验,通常当线程数接近或等于内核数量是,测试效果最佳。另外,你还需
要提高在inno db内部执行的并发线程数量。从MySQL 5.0.19之后,innodb_thread_concurrency
参数的含义就改变了,因此请确定您设置了正确的值。我们发现,将该变量的值设置为0是最好的(无限线程)。
减少由于IO造成的延迟
消除IO延迟的一个方法是不要使用任何IO,例如,缓存所有的事情。Sysbench测试表中每一个行约为250字节,因此1000万行表中的数据量约为2.5GB 。大多数系统的内存都大于2.5GB,因此您可以将这个表都放入内存缓存中。
MySQL
使用变量innodb_buffer_size来确定缓存大小。如果您有足够的内存(在我们的测试中是2.5GB),您可以将整个表都放入缓存中。另一个
策略(尤其是当您在使用32位MySQL时)是为innodb_buffer_size设一个较小的值,而在文件系统缓存中来缓存表。但是我认为在
innodb级别缓存数 据的效率更高。这将消除或明显减少所有的读。
对消除写而言,您可以选择进行只读测试,或使用一个可缓存(cache-enabled)的磁盘来写。缓存可以是NVRAM,也可以是磁盘上的写缓存。注意:使用没 有电池支持的缓存是非常危险的,请在您自己的磁盘上做缓存。
如果您仍然发现了由IO造成的延迟(转化为系统的空闲时间),您可以尝试添加更多线程来吸收可以的CPU。在寻找合适的平衡时,您需要格外小心。
安装:
./configure --with-mysql-includes=/opt/app/mysql/include/mysql --with-mysql-libs=/opt/app/mysql/lib/mysql
通过修改下面的参数,我们获得了最好的测试结果:
1 通过--num-threads 参数来使用多个sysbench线程
2 在my.cnf文件中设置innodb_thread_concurrency = 0
3 将innodb_buffer_size设置为大于或等于表大小
我在测试中,对my.cnf中的参数做了如下配置:
[mysqld]
datadir=/mysqldata
innodb_data_home_dir = /mysqldata
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /mysqldata
innodb_buffer_pool_size = 4096M(含有1000万行记录的表大小为2.5GB)
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 400M
innodb_log_buffer_size = 64M
innodb_thread_concurrency = 0
cpu测试
sysbench --test=cpu --cpu-max-prime=20000 run
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测试
google:
--db-ps-mode=disable
sysbench --test=oltp --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password= --mysql-table-engine=innodb --oltp-table-size=1000000 prepare
sysbench --mysql-db=sbtest --max-requests=0 --test=oltp --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=1000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --mysql-password= --num-threads=16 --max-time=600 run
sysbench --mysql-db=sbtest --max-requests=0 --test=oltp --mysql-engine-trx=yes --mysql-table-engine=innodb --oltp-table-size=1000000 --db-ps-mode=disable --mysql-user=root --mysql-host=localhost --mysql-socket=/tmp/mysql.sock --oltp-read-only --mysql-password= --num-threads=16 --max-time=600 run
kernel developer:
sysbench --test=oltp --mysql-socket=/tmp/mysql.sock --mysql-user=root --max-requests=0 --max-time=60 --oltp-read-only=on --num-threads=$1 run
上述参数指定了本次测试的表存储引擎类型为 myisam,这里需要注意的是,官方网站上的参数有一处有误,即 --mysql-table-engine,官方网站上写的是 --mysql-table-type,这个应该是没有及时更新导致的。另外,指定了表最大记录数为 1000000,其他参数就很好理解了,主要是指定登录方式。测试 OLTP 时,可以自己先创建数据库 sbtest,或者自己用参数 --mysql-db 来指定其他数据库 。--mysql-table-engine 还可以指定为 innodb 等 MySQL 支持的表存储引擎类型。
以下为本文DB的结果:
OLTP test statistics:
queries performed:
read: 140000
write: 50000
other: 20000
total: 210000
transactions: 10000 (1999.02 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 190000 (37981.47 per sec.)
other operations: 20000 (3998.05 per sec.)
Test execution summary:
total time: 5.0024s
total number of events: 10000
total time taken by event execution: 39.8898
per-request statistics:
min: 2.87ms
avg: 3.99ms
max: 43.48ms
approx. 95 percentile: 5.37ms
Threads fairness:
events (avg/stddev): 1250.0000/27.23
execution time (avg/stddev): 4.9862/0.00
评论
很好,支持一下。
转载的而已,呵呵
发表评论
-
找出mysql中最大的表
2011-08-04 12:41 1621SELECT concat(round(table_rows/ ... -
find 10 largest table in mysql
2010-07-20 11:09 1070SELECT concat(round(table_rows/ ... -
MySQL Back to Basics: Analyze, Check, Optimize, and Repair
2010-07-14 11:35 1156http://www.pythian.com/news/111 ... -
找出mysql中无用的索引
2010-07-13 14:49 1851select t.TABLE_SCHEMA , ... -
xtrabackup timeout bug
2010-06-13 10:21 1046I modified /usr/bin/innobac ... -
Compiling sysbench 0.4.12 for Debian
2010-06-09 10:16 949http://www.randombugs.com/linux ... -
mysql 实用工具集
2010-06-04 00:08 1071这些工具都是从网上搜集来的,对mysql的管理,调优和恢复有很 ... -
gearman for mysql
2010-05-10 18:26 972http://www.slideshare.net/datac ... -
几个应该被修改的mysql默认值
2010-05-06 15:24 1457wait_timeout = 20 (不适合持久连接) in ... -
How to Perform a Healthcheck on the Database
2010-02-26 10:05 1370http://bbs.chinaunix.net/thread ... -
PostgreSQL与Innodb并发控制大比拼
2010-01-14 11:38 2030http://wangyuanzju.blog.163.com ... -
关于mysql的很好网站
2009-10-21 10:40 919http://www.mysqlperformanceblog ... -
Should you move from MyISAM to Innodb ?
2009-10-17 02:37 1003There is significant portion of ... -
最好的mysql备份工具
2009-08-19 16:45 1192Xtrabackup https://launchpad.n ... -
mysql 增量备份脚本
2009-08-18 09:44 3627根据网上脚本修改而成 mysqlFullBackup.sh ... -
mysql-zrm备份mysql数据库
2009-07-22 13:58 2747MySQL-zrm是用perl脚本写的 ... -
Base: An Acid Alternative
2009-06-18 15:55 1375http://queue.acm.org/detail.cfm ... -
关于innodb插入性能
2009-04-07 10:54 1569根据某网友的测试,innodb在以下条件下插入性能是稳定的: ... -
MySQL主从服务器的一些技巧
2009-03-25 15:18 922http://www.sunnyu.com/?p=150 -
mytop1.6补丁
2009-03-13 17:27 975mytop是一个实时监控mysql状态的工具,很好用,但是有一 ...
相关推荐
sysbench-tpcc-2.1.tar.gzsysbench-tpcc-2.1.tar.gzsysbench-tpcc-2.1.tar.gzsysbench-tpcc-2.1.tar.gzsysbench-tpcc-2.1.tar.gzsysbench-tpcc-2.1.tar.gz
sysbench(sysbench-1.0.20)是一个基于LuaJIT的可编写脚本的多线程基准测试工具,主要用于数据库基准测试。 sysbench-1.0.20.tar.gz sysbench-1.0.20.zip
官方离线安装包,亲测可用
mysql的sysbench基准测试,包括sysbench下载链接,安装及测试
离线安装包,亲测可用
https://github.com/akopytov/sysbench 下载的sysbench源码
操作系统版本:rehat 9.0 平台架构:x86_64 sysbench版本:1.0.20 rpm包,性能测试工具
数据库经典压测工具sysbench双版本 sysbench0.5支持oracle sysbench1.1 支持达梦 附详细安装文档,亲测可用
操作系统:龙蜥 7.9 平台架构:aarch64 sysbench版本:1.0.20 相关依赖请查阅博客文档
MySQL 性能测试工具sysbench安装使用
操作系统版本:centos 6 平台架构:x86_64 sysbench版本:1.0.20
操作系统:openEuler 22.03 架构平台:x86_64 sysbench版本:1.0.20 类型:rpm包
操作系统:centos7 系统架构:aarch64 sysbench 版本:1.0.20 性能压测工具 rpm包
centos 7 x86_64 平台 sysbench 版本:1.0.20 rpm包 内含src源码包和二进制包
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。 目前sysbench代码托管在launchpad上,项目地址:https://launchpad.net/sysbench(原来的官网 ...
Sysbench和Docker设置可对基于物理,虚拟和基于容器MySQL进行基准测试 此存储库包含用于Hewlett Packard Enterprise(HPE)和Docker Inc.的参考脚本文件,Dockerfiles和配置。自2017年初以来,该参考体系结构文件``'...
sysbench-mongodb, 用于MongoDB和TokuMX的agavi基准 sysbench-mongodb用于MongoDB和TokuMX的Sysbench要求Java 1.6或者 1.7如果你还没有MongoDB驱动程序,那么MongoDB驱动程序必须存在并且位于类路径中,如你还没有...
利用mysqlslap 、sysbench 、supersmack等工具来测试MYSQL集群性能,包含并发读写能力,大数据量下的读写能力,并发事务处理能力,稳定性,单线程性能等给出了测试用例。
重点来说MySQL的基准测试如何进行,也有很多种工具来供我们选择,比如mysqlslap、sysbench、Super Smack等,其中mysqlslap的使用MySQL官网给出了介绍,Super Smack是服务器压力测试强有力的工具,那么sysbench便是...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装