Cephfs & Ceph RBD 在k8s中的適用場景討論及資料庫效能壓測
前言
測試發現cephfs的小檔案讀寫效能一般,且寫入延遲偏高,效能不甚滿意,但是滿足於日常應用環境的讀寫是沒有問題的,但是在面對資料庫的應用場景,是否能滿足效能要求呢?本篇主要結合kubernetes,針對資料庫應用場景,對cephfs 和 ceph rbd這兩種ceph儲存介面來進行效能對比測試.
在對比之前,再貼一下k8s對於cephfs和cephrbd的接入模式的支援:
Ceph RBD調優
在測試之前,首先對ceph rbd進行鍼對性的配置優化
ceph.conf:
[client] rbd cache size = 268435456 #預設32M rbd cache max dirty = 134217728 #最大未落盤髒資料大小,預設16M,此值小於cache size rbd cache max dirty age = 5 #最大未落盤髒資料存放時間,預設1,單位s rbd cache max dirty object = 64 #最大未落盤髒資料物件數量,預設object大小為4M,因此建議值為rbd cache max dirty / 4 #osd段增加執行緒數,預設為1,不要過大,防止執行緒鎖 [osd] rbd op threads = 4
配置完成後逐個重啟ceph節點
測試工具
1.sysbench
專案地址:
akopytov/sysbench
sysbench是跨平臺的基準測試工具,使用預定義或自定義的lua指令碼靈活地進行效能測試,支援多執行緒,支援多種資料庫;主要包括以下幾種方面的效能:
cpu效能
磁碟io效能
排程程式效能
記憶體分配及傳輸速度
POSIX執行緒效能
資料庫效能(OLTP基準測試)
本文將進行資料庫 事務/非事務 只讀(查詢)/混合讀寫基準效能測試。
2.TPCC
TPC-C是專門針對聯機交易處理系統(OLTP系統)的規範
Tpcc-mysql由percona根據tpcc規範實現以訂單為中心的多表聯表操作效能測試,更貼切於業務場景.
工具內建業務場景模擬邏輯圖:
使用參考:
https://www.cnblogs.com/Aiapple/p/5705146.html
測試
為方便部署,全部使用容器測試,容器執行起來後本質即是一組程序,cpu/記憶體/磁碟 效能損耗可以說比虛擬化還小,因此可以排除效能損耗的干擾
配置規格:
記憶體: 64G
CPU: E5-2683 v4 *2
網絡卡: 10GE
儲存介質分為4種場景:
1.機械硬碟 raid5
2. 16 * ssd raid 5
3. cephfs(ssd)
4. ceph rbd(ssd)
測試方法可參考上方連結中的文章,這裡直接貼結果:
結果分析:
- ssd raid效能毫無疑問是最好的
- ceph rbd 資料庫qps/tps可達ssd raid的60%-70%,
- cephfs因為寫入延遲不穩定的原因,壓測過程中極小比例的操作響應時間非常漫長,導致qps/tps值整體表現不佳
- hdd測試得到的qps/tps值中規中矩,操作最低響應時間較其他三者要高,但最高響應時間值也不會很高.然而機械硬碟介質決定了隨著它的負載增高定址時間會隨之加長,效能將會呈線性下降.
適用場景討論
Cephfs:
優點:
1.讀取延遲低,I/O頻寬表現良好,尤其是block size較大一些的檔案
2.靈活度高,支援k8s的所有接入模式
缺點:
1.寫入延遲相對較高且延遲時間不穩定
適用場景:
適用於要求靈活度高(支援k8s多節點掛載特性),對I/O延遲不甚敏感的檔案讀寫操作,以及非海量的小檔案儲存支援.例如作為常用的應用/中介軟體掛載儲存後端.
Ceph RBD:
優點:
1.I/O頻寬表現良好
2.讀寫延遲都很低
3.支援映象快照,映象轉儲
缺點:
1.不支援多節點掛載
適用場景:
對I/O頻寬和延遲要求都較高,且無多個節點同時讀寫資料需求的應用,例如資料庫.
歡迎補充