我需要一些幫助提高卡桑德拉閱讀性能。隨着列族大小的增加,我擔心讀取性能會下降。我們有關於單節點Cassandra的以下統計信息。卡桑德拉亞馬遜EC2,閱讀性能實驗
操作系統:Linux的 - CentOS版本5.4(最終)
卡桑德拉版本: Apache的卡桑德拉 - 1.1.0
Java版本: 「1.6.0_14」 的Java(TM)SE運行環境(建立1.6.0_14-B08) 爪哇熱點(TM)64位服務器VM(構建14.0-B16,混合模式)
卡桑德拉配置:(cassandra.yaml)
- rpc_server_type:HSHA
- disk_access_mode:MMAP
- concurrent_reads:64
- concurrent_writes:32
平臺:亞馬遜EC2/RightScale的m1.Xlarge與4個短暫的磁盤實例與raid0。 (15 GB總內存,4個虛擬核心,2 ECU,翻ECU = 8)
實驗的配置: 我試圖做一些實驗用GC
卡桑德拉配置:
10 GB RAM分配給Cassandra堆,3500MB是堆新的大小。
JVM配置:
JVM_OPTS = 「$ JVM_OPTS -XX:+ UseParNewGC」
JVM_OPTS = 「$ JVM_OPTS -XX:+ UseConcMarkSweepGC」
JVM_OPTS = 「$ JVM_OPTS -XX:+ CMSParallelRemarkEnabled」
JVM_OPTS = 「$ JVM_OPTS -XX:SurvivorRatio = 1000」
JVM_OPTS = 「$ JVM_OPTS -XX:MaxTenuringThreshold = 0」
JVM_OPTS = 「$ JVM_OPTS -XX:CMSInitiatingOccupancyFraction = 40」
JVM_OPTS =「$ JVM_OPTS -XX:+ UseCMSInitiatingOccupancyOnly -XX:+ UseCompressedOops「
從OpsCenter中社區2.個
結果統計:
讀請求208至240每秒
寫請求18至28每秒
OS加載24.5至25。85
寫請求延遲127至160百萬分之一
讀取請求延遲82202至94612百萬分之一
OS發送的網絡流量每秒
OS收到網絡流量4338 KB平均每秒
OS磁盤隊列尺寸13至15 44646 KB平均請求
讀取請求待定25至32
OS磁盤延遲48至56毫秒
OS磁盤讀取吞吐量每秒
磁盤IOPS 4.6 MB讀取420每秒
IOWAIT 80%的CPU平均
空閒13%的CPU平均
Rowcache被禁用。
柱族
一列家族,我只是從通過CLI創建閱讀
create column family XColFam
with column_type='Standard'
and comparator = CompositeType(BytesType,IntegerType)';"
列家族的SSTable大小= 7.10 GB,的SSTable計數= 2
XColFam
專欄有59499904沒有。估計的行鍵(大多數是utf8文字,長度不定,通過mx4jtools估計)與像本質薄的列一樣,值爲0字節.....現在。
大多數行的列數應該非常少,也許是1到10,所以列名第一個組件的大約20到30個字節,第二個是8個字節的整數....組合列的第二個組件是動態的可以重複,但概率很低.......第一個組件在不同品種中重複,但行數可能不同。
我試過SnappyCompression
來壓縮列族,但大小沒有變化。
我有一個計劃的服務,對於小時,20個線程運行,併爲多個密鑰隨機讀取請求(每個請求現在它的2個鍵)此列家庭和讀取整行,沒有列切片或等
我認爲它現在表現不好,因爲它每分鐘處理的請求太少。在柱子大小不是那麼大的時候,它工作得更好。大約是3到4 GB。
我擔心讀取性能會隨着列族大小的增加而降低得太快。
我也試圖調整一些GC和內存的東西,因爲在那之前我有很多的GC和CPU使用率。數據量較小時,波形非常小的iowait。
我該如何提高Cassandra的性能。您的建議將不勝感激。
閱讀請求延遲82202到94612微秒... 82秒延遲? – Crowie 2013-09-09 10:19:43