- 浏览: 851957 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1688SELECT concat(round(table_rows/ ... -
find 10 largest table in mysql
2010-07-20 11:09 1110SELECT concat(round(table_rows/ ... -
MySQL Back to Basics: Analyze, Check, Optimize, and Repair
2010-07-14 11:35 1191http://www.pythian.com/news/111 ... -
找出mysql中无用的索引
2010-07-13 14:49 1891select t.TABLE_SCHEMA , ... -
xtrabackup timeout bug
2010-06-13 10:21 1092I modified /usr/bin/innobac ... -
Compiling sysbench 0.4.12 for Debian
2010-06-09 10:16 986http://www.randombugs.com/linux ... -
mysql 实用工具集
2010-06-04 00:08 1112这些工具都是从网上搜集来的,对mysql的管理,调优和恢复有很 ... -
gearman for mysql
2010-05-10 18:26 1007http://www.slideshare.net/datac ... -
几个应该被修改的mysql默认值
2010-05-06 15:24 1495wait_timeout = 20 (不适合持久连接) in ... -
How to Perform a Healthcheck on the Database
2010-02-26 10:05 1403http://bbs.chinaunix.net/thread ... -
PostgreSQL与Innodb并发控制大比拼
2010-01-14 11:38 2094http://wangyuanzju.blog.163.com ... -
关于mysql的很好网站
2009-10-21 10:40 951http://www.mysqlperformanceblog ... -
Should you move from MyISAM to Innodb ?
2009-10-17 02:37 1039There is significant portion of ... -
最好的mysql备份工具
2009-08-19 16:45 1216Xtrabackup https://launchpad.n ... -
mysql 增量备份脚本
2009-08-18 09:44 3657根据网上脚本修改而成 mysqlFullBackup.sh ... -
mysql-zrm备份mysql数据库
2009-07-22 13:58 2779MySQL-zrm是用perl脚本写的 ... -
Base: An Acid Alternative
2009-06-18 15:55 1410http://queue.acm.org/detail.cfm ... -
关于innodb插入性能
2009-04-07 10:54 1601根据某网友的测试,innodb在以下条件下插入性能是稳定的: ... -
MySQL主从服务器的一些技巧
2009-03-25 15:18 962http://www.sunnyu.com/?p=150 -
mytop1.6补丁
2009-03-13 17:27 1007mytop是一个实时监控mysql状态的工具,很好用,但是有一 ...
相关推荐
1. 测试工具介绍:文档提到了mysqlslap、sysbench、supersmack等工具,这些都是用于测试MYSQL性能的工具。 - mysqlslap是一个用于模拟多用户访问MySQL数据库的性能测试工具,它可以用来进行并发读写测试。 - ...
4. **Super-smack**:这是由MySQL AB的程序员编写的另一个开源工具,同样支持多线程并发压力测试,具有高度可定制性。 在安装和使用这些工具时,通常需要根据具体的操作系统和MySQL版本来调整。例如,在Red Hat 5.5...
4. **Super-smack**:由MySQL AB的程序员开发的另一款开源产品,同样支持多线程并发压力测试,具有高度的可定制性。 #### 三、测试工具的安装与配置 以**MySQLslap**为例,其安装通常随MySQL默认安装包一同提供,...
为了达到这个目标,使用了四个测试工具:Mysqlslap、mysql benchmark suite、sysbench和supersmack。测试用例包括并发写能力、并发事务处理能力、单线程功能测试以及大数据量下的读写性能对比。 在并发写能力测试中...
Sysbench是一个多线程的数据库和系统性能测试工具,支持MySQL、PostgreSQL等多种数据库系统。 除了Web服务器和数据库测试工具,还有一些专门针对特定场景的工具,如Database test suite用于数据库的全面测试,super...
- MySQL基准测试:如mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool和sysbench。 - MySQL代理:SOHU-DBProxy、Altas、cobar和Oceanus用于优化MySQL性能和负载均衡。 - 备份工具:mysqldump、...
- 压测与基准:mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool、sysbench。 - 代理与备份:MySQL Proxy工具如SOHU-DBProxy、Altas、cobar、Oceanus,以及物理备份工具Xtrabackup、LVM Snapshot。 ...
15. **MySQL基准测试**: 使用mysqlsla、sql-bench、Super Smack、Percona's TPCC-MYSQL Tool和sysbench来衡量数据库性能。 16. **MySQL代理**: SOHU-DBProxy、Altas、cobar、Oceanus提供MySQL的负载均衡和故障切换...
MySQL基准测试工具如mysqlsla、sql-bench、Super Smack等,MySQL Proxy如SOHU-DBProxy、Atlas、cobar和Oceanus。物理备份有Xtrabackup和LVM Snapshot,逻辑备份工具如mysqldump、mysqlhotcopy、mydumper等。 9. **...