一 前言
有贊的基礎架構使用了UCloud的基礎服務,我們有相當比例的數據庫是UCloud的RDS(一部分使用云RDS,一部分使用購買他們的物理服務器自建數據庫)。
近期我們了解到 UCloud 推出一款基于快杰主機的UDB實例,因為他們在整機架構上針對CPU,OS內核 ,磁盤,網絡結構有比較大的改進和增強,數據庫性能也有很大的性能提升。
所以本文寫寫針對快杰UDB和基于快杰自建實例的性能測試對比,為我們以后的實例選型做個技術參考。
什么是快杰?
其實快杰就是云主機,不是單獨的物理服務器,基于物理機做了一層分布式存儲系統,利用CPU 網絡等硬件技術,優化OS內核,它具有以下特性:
計算、存儲與網絡性能卓越的旗艦云主機。
支持AMD 第二代EPYC CPU(2.9GHz主頻)或 Intel Cascadelake CPU(2.5GHz主頻)
最大網絡性能達到1000W PPS,最大存儲性能達到120W IOPS。
規格靈活,最高支持96核768G的超大規格實例。
在Web服務,游戲服務,數據庫,數據分析處理等絕大多數場景表現出色,性價比極佳。
從官網上來看一個比較重要的特性是磁盤空間可以拓展到32T ,這個算是比較吸引我們的一個特性,運維數據庫的過程中經常遇到空間不足的情況,必須遷移實例,調整到其他機器上,成本比較高。
本文測試的是基于Intel CPU的快杰機型,(和一些硬件的朋友聊 AMD指令集對MySQL的運行可能和Intel指令集合的結果不一樣。)
二 環境準備
UCloud的 數據庫版本 MySQL 5.7.25。
RDS 實例選擇選用他們默認的 my.cnf 模板。核心參數配置如下:
| binlog_format | ROW |
| innodb_adaptive_flushing | ON |
| innodb_adaptive_hash_index | ON |
| innodb_buffer_pool_instances | 8 |
| innodb_buffer_pool_size | 8589934592 |
| innodb_file_per_table | ON |
| innodb_flush_log_at_trx_commit | 2 |
| innodb_flush_method | O_DIRECT |
| innodb_io_capacity | 15000 |
| innodb_lock_wait_timeout | 50 |
| innodb_log_buffer_size | 8388608 |
| innodb_log_file_size | 1073741824 |
| innodb_log_files_in_group | 2 |
| innodb_max_dirty_pages_pct | 50.000000 |
| innodb_open_files | 1024 |
| innodb_read_io_threads | 8 |
| innodb_write_io_threads | 8 |
| innodb_stats_on_metadata | OFF |
| innodb_thread_concurrency | 20 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_connect_errors | 1000000 |
| max_connections | 2000 |
| max_user_connections | 0 |
| open_files_limit | 1000000 |
| sync_binlog | 1 |
| table_definition_cache | 464 |
| table_open_cache | 128 |
| thread_cache_size | 50 |
參數是UCloud默認的,未做特別的優化。
之前的壓測文章里面,沒有寫壓測機器的配置和網絡時延,這次加上。
壓測機器配置
萬兆帶寬
CPU
壓測機器到UDB的網絡時延 0.15-0.22ms 左右
壓測機器到自建Uhost 網絡時延0.22-0.3ms左右,的RT 大于到自建udb的0.05-0.1ms之間 。RT會影響測試效果
測試工具 sysbench 0.5 版本 。
測試場景
100張表,每張表10w行數據,共1kw數據量,數據庫內存設置為32G
壓測腳本如下:
#!/bin/bash
threads="12
24
36
48
60
72
84
96
108"
dt=`date +"%Y%m%d%H%M%S"`
mkdir -p /root/yace_$dt
/root/doDBA -mysql -log &
for i in $threads; do
echo $i
time=`date +"%Y%m%d%H%M%S"`
/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=100 --oltp-table-size=100000 --mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-host=xx.xx.xx.xx --mysql-port=3306 --max-time=500 --max-requests=0 --oltp-test-mode=complex --num-threads=$i run > /root/yace_$dt/thread_$i_$time.log
sleep 60
done
p=`pidof doDBA`
kill -9 $p
三 測試結果
內存模型壓測結果對比:
QPS
insert/delete
update
從測試結果上來看,qps基于快杰的UDB性能比基于快杰自建的數據庫性能要好20%以上。
其實測試了 IO 類型的壓測結果對?,可能由于壓測時間比較短, 及云盤性能存在抖動等因素,測試數據結果波動較大,另咨詢UCloud的技術?員,我購買的 機器將進行固件升級,這個升級后可以再做?次IO 類型的測試。
兩者的價格對比
UDB數據庫費用
UHost自建機器費用
創建高可用的UDB和兩臺快杰Uhost的直接價格,基于快杰自建5602 元/月,基于快杰的UDB 5160 元/月價格更實惠。
從性價比上來說如果沒有自建的運維平臺,基于UHost自建數據庫需要額外的運維系統(備份,監控,報警,HA等),開發運維部署這些也需要人力成本,總而言使用基于快杰的UDB更劃算。
四 小結
近年來 云RDS 性能的突飛猛進離不開底層cpu、磁盤、網絡等方面技術的快速發展。UCloud快杰UDB的性能能夠滿足絕大多數業務運行的性能容量需求(大量 bad sql 除外)。
從測試結果上來看,基于快杰的數據庫性能表現有比較高的漲幅,性價比還不錯。對于UDB客戶而言選擇基于快杰的UDB是個不錯的選擇。
-The End-