天天看點

Percona Thread Pool性能基準測試

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) 其他預設設定
CASE2-thp(default)-oversub(10) thread_pool_oversubscribe = 10
CASE3-thp(default)-oversub(10)-max(10000) thread_pool_max_threads = 100000
CASE4-thp(default)-oversub(16)
CASE5-thp(128)-oversub(16)-max(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性能基準測試

針對這個測試結果,我們可以得到一些結論:

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_pool_oversubscribe = 10 #這個值建議在3~20間,不清楚的話,無需設定

繼續閱讀