用sysbench(或许superITeye头条 - 娱乐之横扫全球

用sysbench(或许superITeye头条

2019-01-31 09:43:35 | 作者: 寄波 | 标签: 测验,参数,线程 | 浏览: 5376

Sysbench是一款盛行的开源基准测验东西,用来测验不同操作体系渠道即其上数据库的功能。因为咱们现在评论的是MySQL,我将要点解说数据库测验部分。

Sysbench基准测验在测验OLTP时,先生成一张表,然后再运行一组查询指令。默许情况下,表中每一行数据约为250字节,并创立100行。依据我的经历,我 们创立1000万行。Allan有一篇联系测验细节的博客( 在此,我将从别的一个视点来介绍咱们的测验。

使测验取得好得数据,这其实十分简略:
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

 

 

 

 

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表娱乐之横扫全球立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章