(用於測試對比:AbutionGraph v.s Hbase)
1. 測試目的
測試Cassandra集羣讀寫TPS的極值,確定Cassandra讀寫性能。
2. 測試環境
2.1 硬件信息
CPU | 8核 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz |
RAM | 16G |
2.2 軟件信息
JDK | 1.8u151 |
Cassandra | 3.11.1 |
cassandra-driver-core | 3.3.2 |
OS | CentOS Linux release 7.3.1611 |
2.3 集羣信息
集羣名稱 | IP | 類型 |
JCPT Test Cluster | 10.112.68.184 | 節點1 |
10.112.68.185 | 節點2 | |
10.112.68.186 | 節點3(種子節點) | |
10.112.68.189 | 節點4 | |
10.112.68.191 | 節點5 | |
10.112.68.192 | 節點6(種子節點) |
2.4 主要配置信息
集羣配置爲單數據中心,測試時,數據庫keyspace的,採取SimpleStrategy策略
副本因子:3
分區器:Murmur3Partitioner
整個過程中通用設置如下
A.線程池設置:
setCoreConnectionsPerHost(HostDistance.LOCAL, 2)
setMaxConnectionsPerHost(HostDistance.LOCAL, 4)
B.每次連接最大請求數量採取默認設置:本地端--1024;遠程端--256
C.本地線程池門限採用默認設置:32
3. 測試過程
先測試單個客戶端的讀寫性能,再測試多個客戶端的TPS,測試出服務器讀寫操作的TPS瓶頸。
3.1 單客戶端測試讀寫性能及結果
在單個客戶端對集羣中的單表進行數據讀寫操作,測試讀寫性能。
具體過程:
100個併發向同一張表處理100W數據;
200個併發向同一張表處理100W數據;
500個併發向同一張表處理100W數據;
1000個併發向同一張表處理100W數據;
1500個併發向同一張表處理100W數據;
(腳本測試所在機器:10.112.68.186)
測試結果:
l 表一 單數據庫100W數據性吞吐量性能測試
100 | 200 | 500 | 1000 | 1500 | |
insert | 5472 | 5574 | 23429 | 30781 | 35024 |
select | 18985 | 20323 | 35795 | 39088 | 38927 |
update | 5766 | 5824 | 27805 | 34301 | 35867 |
delete | 5446 | 5328 | 26581 | 34934 | 34635 |
l 表二 單數據100W數據時間耗時時測試
100 | 200 | 500 | 1000 | 1500 | |
insert | 182.734 | 179.406 | 42.683 | 32.488 | 28.566 |
select | 52.672 | 49.206 | 27.937 | 25.583 | 25.702 |
update | 173.439 | 171.717 | 25.779 | 29.154 | 27.895 |
delete | 183.608 | 187.671 | 37.621 | 28.625 | 28.887 |
爲了直觀上看各項性能變化,將上述表格使用折線圖表示,如圖1、圖2所示:
圖1 100W性能測試—TPS
圖2 100W性能測試—耗時(S)
3.2 多客戶端測試讀寫性能及結果
在多個客戶端分別對集羣中的同一張表進行數據讀寫操作,測試讀寫性能。
過程:
I. 2個客戶端進行分別處理100W數據,將各個客戶端TPS值相加,計算集羣TPS;
II. 3個客戶端進行分別處理100W數據, 將各個客戶端TPS值相加,計算集羣TPS;
III.依次增加客戶端數量,計算TPS達到瓶頸之後,停止增加;
IV. 線程數量爲500。
結果:
圖3 多客戶端性能測試—吞吐量(TPS)
集羣達到瓶頸之後開始拋出如下錯誤信息:
Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)
Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)
Cassandra timeout during write query at consistency LOCAL_ONE (1 replica were required but only 0 acknowledged the write)
... ...
4 測試結論
( 1 ) 從單客戶端測試數據得出在併發大於500後個併發範圍內,各項操作TPS提升幅度較大,併發數量爲1500時TPS趨於穩定,測試線程數大於1500之後會出現響應超時錯誤。
( 2 ) 當增加客戶端數量,集羣 TPS線性增加,集羣讀寫TPS可以達到6萬,之後趨於穩定,其中超過6個客戶端同時進行百萬級讀數據操作時達到瓶頸,寫操作在超過7個客戶端後同時進行百萬級寫數據操作時性能達到瓶頸,此時寫和修改操作TPS高於讀的TPS。可知:大量數據操作時寫的性能優於讀。
附件:
測試代碼 cassandra-test.rar