背景
???? 因?yàn)?.1對(duì)Controller進(jìn)行了重構(gòu),看官方介紹性能有很大提升,正好覺得當(dāng)前1.0版本Controller處理有些慢,簡(jiǎn)單測(cè)試了下性能差異。
壓測(cè)環(huán)境:
Broker機(jī)器:5臺(tái)
Broker JVM配置:-Xms2g -Xmx4g -Xmn1280m -XX:+UseConcMarkSweepGC
日志存儲(chǔ)目錄:2個(gè)目錄
Kafka版本:1.0、1.1
副本數(shù):3
每個(gè)topic分區(qū)數(shù):100
評(píng)估指標(biāo)
????官方并沒有提供Controller性能相關(guān)的metric,不過根據(jù)Controller的職責(zé)和網(wǎng)上的資料,通常根據(jù)Broker的啟停耗時(shí)和Controller容災(zāi)切換時(shí)間來判斷Controller的性能,耗時(shí)越長(zhǎng)說明當(dāng)前Controller性能壓力越大。
壓測(cè)結(jié)果
1.0
| topic總數(shù) | 單機(jī)分區(qū)數(shù) | Broker啟動(dòng)耗時(shí)(s) | Broker關(guān)閉耗時(shí)(s) | Controller切換耗時(shí)(s) | Broker kill -9 Controller處理耗時(shí) | 備注 |
|---|---|---|---|---|---|---|
| 1 | 40 | 5 | 4 | 6 | 9 | |
| 2 | 100 | 6 | 4 | 5 | 6 | |
| 3 | 160 | 6 | 4 | 30 | 7 | |
| 4 | 220 | 5 | 3 | 30 | 7 | |
| 6 | 400 | 5 | 4 | 19 | 7 | |
| 9 | 580 | 7 | 18 | 30 | 6 | |
| 12 | 760 | 7 | 20 | 21 | 9 | |
| 16 | 1000 | 7 | 22 | 22 | ||
| 31 | 1900 | 8 | 22 | 32 | ||
| 46 | 2800 | 7 | 25 | 39 | ||
| 61 | 3700 | 8 | 34 | 33 | ||
| 91 | 5500 | 8 | 113 | 47 | 刪除topic慢 | |
| 121 | 7300 | 9 | 92 | 97 | ||
| 151 | 9100 | 10 | 86 | 85 | 刪除topic特別慢 | |
| 181 | 10900 | 12 | 87 | 87 | ||
| 221 | 13300 | 13 | 108 | 98 | 已經(jīng)不能刪除topic |

1.1
| topic總數(shù) | 單機(jī)分區(qū)數(shù) | Broker啟動(dòng)耗時(shí)(s) | Broker關(guān)閉耗時(shí)(s) | Controller切換耗時(shí)(s) | Broker kill -9 Controller處理耗時(shí) | 備注 |
|---|---|---|---|---|---|---|
| 1 | 40 | 5 | 2 | 1 | 5 | |
| 2 | 100 | 4 | 2 | 1 | 5 | |
| 3 | 160 | 5 | 4 | 2 | 6 | |
| 4 | 220 | 4 | 2 | 2 | 6 | |
| 6 | 400 | 5 | 2 | 1 | 6 | |
| 9 | 580 | 5 | 3 | 2 | 6 | |
| 12 | 760 | 6 | 4 | 1 | 6 | |
| 16 | 1000 | 7 | 3 | 2 | ||
| 31 | 1900 | 6 | 5 | 3 | ||
| 46 | 2800 | 7 | 5 | 3 | ||
| 61 | 3700 | 4 | 7 | 4 | ||
| 91 | 5500 | 7 | 7 | 6 | ||
| 121 | 7300 | 10 | 8 | 8 | ||
| 151 | 9100 | 9 | 8 | 10 | ||
| 181 | 10900 | 10 | 10 | 12 | ||
| 221 | 13300 | 12 | 13 | 16 | 刪除topic慢 |

1.0與1.1對(duì)比




分析
???? 從壓測(cè)結(jié)果可以看到,隨著分區(qū)數(shù)越來越多,耗時(shí)指標(biāo)均呈現(xiàn)上漲趨勢(shì)。啟動(dòng)Broker啟動(dòng)耗時(shí)上漲最慢,應(yīng)該是分區(qū)內(nèi)沒數(shù)據(jù),所以加載很快,線上遇到過分區(qū)數(shù)500,加載半小時(shí)的情況。Broker關(guān)閉耗時(shí)上漲較快是因?yàn)樵趦?yōu)雅關(guān)閉時(shí)需要進(jìn)行Leader切換,導(dǎo)致時(shí)間較長(zhǎng)。Controller耗時(shí)上漲是由于需要管理的分區(qū)數(shù)增長(zhǎng)導(dǎo)致。1.1版本的Controller性能確實(shí)提高不少,在分區(qū)數(shù)持續(xù)增長(zhǎng)情況下,耗時(shí)也能基本保持在個(gè)位數(shù)。
???? 直接對(duì)Broker進(jìn)行kill -9,發(fā)現(xiàn)Controller對(duì)的處理耗時(shí)并未明顯增長(zhǎng)。具體又分為兩種情況:1、kill -9比優(yōu)雅關(guān)閉耗時(shí)短,這和預(yù)期也一致,因?yàn)閮?yōu)雅關(guān)閉會(huì)將當(dāng)前要刷盤的數(shù)據(jù)刷完后才會(huì)關(guān)閉各類線程,耗時(shí)必然會(huì)長(zhǎng)一些。2、kill -9比優(yōu)雅關(guān)閉耗時(shí)長(zhǎng),這主要是因?yàn)閦node節(jié)點(diǎn)失效時(shí)間導(dǎo)致,默認(rèn)是6s,所以最長(zhǎng)等待6s才會(huì)認(rèn)為該broker掛掉,進(jìn)行Leader切換的處理流程。
???? 最后,如果有升級(jí)計(jì)劃,最好升級(jí)到1.1版本或之后的版本~~