MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 3554|回复: 0

[测试及基准] Percona Thread Pool性能基准测试

[复制链接]
发表于 2015-9-24 16:57:39 | 显示全部楼层 |阅读模式
本帖最后由 Example.Blog002 于 2015-9-24 18:41 编辑

转载:http://imysql.com/2014/07/02/per ... hmark-testing.shtml



MySQL从5.5.16开始,在MySQL的商业化版本中将Thread Pool作为plugin提供官方功能支持。后来MariaDB也实现了这一功能,Percona也跟进实现了。从这几天对Percona 5.6.16版本做了下thread pool对比测试,试图找到较为合适的配置参数。


下面是几个测试模式对比:

模式
配置参数
Percona 5.6.16-nothp
未开启 thread pool 模式
CASE0-thp(128)-oversub(16)-max(2048)
thread_handling = pool-of-threads
thread_pool_size = 128
thread_pool_oversubscribe = 16
thread_pool_max_threads = 2048
CASE1-thp(default)
thread_handling = pool-of-threads
其他默认设置
CASE2-thp(default)-oversub(10)
thread_handling = pool-of-threads
thread_pool_oversubscribe = 10
其他默认设置
CASE3-thp(default)-oversub(10)-max(10000)
thread_handling = pool-of-threads
thread_pool_oversubscribe = 10
thread_pool_max_threads = 100000
其他默认设置
CASE4-thp(default)-oversub(16)
thread_handling = pool-of-threads
thread_pool_oversubscribe = 16
其他默认设置
CASE5-thp(128)-oversub(16)-max(100000)
thread_handling = pool-of-threads
thread_pool_size = 128
thread_pool_oversubscribe = 16
thread_pool_max_threads = 100000


仍然采用tpcc-mysql这个测试工具,基准值:

测试Warehouse数: 100
warmup time: 60s
run time: 1200s
并发线程数: 64 ~ 1920


测试环境信息:

测试机
DELL PE R710
CPU
E5620  @ 2.40GHz(4 core, 8 threads, L3 Cache 12 MB) * 2
内存
32G(4G * 8)
RAID卡
PERC H700 Integrated, 512MB, BBU, 12.10.1-0001
系统
Red Hat Enterprise Linux Server release 6.4 (Santiago)
内核
2.6.32-358.el6.x86_64 #1 SMP
raid级别
raid 0
文件系统
xfs
硬盘
SSD: Intel 520系列SSD, 800G * 1


Percona版本号:5.6.16-64.2-rel64.2-log Percona Server with XtraDB (GPL), Release rel64.2, Revision 569,Percona相关的关键配置有:

innodb_buffer_pool_size = 26G
innodb_flush_log_at_trx_commit = 1


测试脚本可参考:MySQL压力测试经验


测试结果见下:

Percona-Thread-Pool测试-20140701.png



针对这个测试结果,我们可以得到一些结论:


1、通常地,只需要开启 pool-of-threads 模式就可以;
2、可以根据实际压力情况,适当调整 thread_pool_oversubscribe 选项以提升 TPS,这个选项值设置范围一般在 3~20;
3、thread-pool-size默认值是逻辑CPU个数,最大值是 128,不建议调整或显式设置,如果显式设定 thread-pool-size 的值,可能会带来反效果;
4、thread_pool_max_threads 默认值是 100000,强烈不建议修改。


综上,对于Thread Pool,我们一般建议设置下面2个选项就足够了:

thread_handling = pool-of-threads
thread_pool_oversubscribe = 10 #这个值建议在3~20间,不清楚的话,无需设置


备注:启用Thread Pool后,想要终止某个查询的话,要这么写KILL QUERY connection_id,而不是写成 KILL connection_id,否则就会导致整个连接被KILL。

如果还有什么问题,欢迎加入我的QQ群(272675472)讨论。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周先生; 联系电话:17896003451

GMT+8, 2017-7-27 06:26 , Processed in 0.234552 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表