測試方法
更新時間 2024-07-04 11:23:25
最近更新時間: 2024-07-04 11:23:25
分享文章
本節主要介紹測試方法。
本章基于GeminiDB Influx實例,進行性能測試,具體包括測試環境,測試步驟,以及測試結果。
測試環境
- 區域:天翼云資源池
- 可用區:可用區一
- 彈性云主機(Elastic Cloud Server,簡稱ECS):規格選擇內存優化型m6.2xlarge.8,8U64GB,操作系統鏡像使用CentOS 7.6 64位版本。
- 被測試集群實例的配置:每個實例包含3個節點。
- 被測試集群實例的規格:4U16G、8U32G、16U64G、32U128G。
測試工具
本次測試采用了開源社區的。
測試指標
- 寫入性能測試關注每秒寫入點數(points/sec)。
- 查詢性能測試關注時延和OPS(Operation Per Second)。
測試步驟
- 執行如下命令,生成需要執行寫入的數據。
tsbs_generate_data --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:00Z" --log-interval="10s" --format="influx" | gzip > /tmp/influx-data.gz
說明-scale:需要生成的時間線數量。
--log-interval:數據采樣間隔。
- 執行如下命令,進行寫入性能測試,獲取寫入性能數據。
NUM_WORKERS=${numWorkers} BATCH_SIZE=${batchSize} DATABASE_HOST=${influxIP} DATABASE_PORT=${influxPORT} BULK_DATA_DIR=/tmp scripts/load_influx.sh
- 執行如下命令,生成查詢語句。
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=20 --query-type="high-cpu-all" --format="influx" | gzip > /tmp/influx-20queries-high-cpu-all-12h-frequency.gz
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=1000000 --query-type="single-groupby-1-8-1" --format="influx" | gzip > /tmp/influx-1000000queries-single-groupby-1-8-1-12h-frequency.gz
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=500 --query-type="double-groupby-1" --format="influx" | gzip > /tmp/influx-500queries-double-groupby-1-12h-frequency.gz
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=50 --query-type="double-groupby-all" --format="influx" | gzip > /tmp/influx-50queries-double-groupby-all-12h-frequency.gz
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=200 --query-type="lastpoint" --format="influx" | gzip > /tmp/influx-200queries-lastpoint-12h-frequency.gz
tsbs_generate_queries --use-case="devops" --seed=123 --scale=10000 --timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-01T12:00:01Z" --queries=500 --query-type="groupby-orderby-limit" --format="influx" | gzip > /tmp/influx-500queries-groupby-orderby-limit-12h-frequency.gz
說明--use-case, --seed,--scale,--timestamp-start 的值與上面步驟中生成寫入數據時設置的值保持一致。
--timestamp-end:數據生成結束后一秒。
--queries:生成的查詢數。
--queries-type:生成的查詢類型,具體模型含義參見下表。
- 執行如下命令,查詢性能,獲取查詢性能數據。
cat /tmp/influx-20queries-high-cpu-all-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 10 --urls=(http|https)://${influxIP}:${influxPORT}
cat /tmp/influx-1000000queries-single-groupby-1-8-1-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 10000 --urls=(http|https)://${influxIP}:${influxPORT}
cat /tmp/influx-500queries-double-groupby-1-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 50 -- urls=(http|https)://${influxIP}:${influxPORT}
cat /tmp/influx-50queries-double-groupby-all-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 10 -- urls=(http|https)://${influxIP}:${influxPORT}
cat /tmp/influx-200queries-lastpoint-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 10 -- urls=(http|https)://${influxIP}:${influxPORT}
cat /tmp/influx-500queries-groupby-orderby-limit-12h-frequency.gz | gunzip | tsbs_run_queries_influx --workers=${numWorkers} --print-interval 50 -- urls=(http|https)://${influxIP}:${influxPORT}
測試模型
表 測試模型
| 測試模型名稱 | 測試模型 | 測試模型語句樣例 |
|---|---|---|
| load | 100% 插入。 | - |
| high-cpu-all | 查詢在一段時間內某個閾值之上的所有信息。 | SELECT * from cpu where usage_user > 90.0 ?and time >= '2020-11-01T05:24:55Z' and time < '2020-11-01T17:24:55Z' |
| single-groupby-1-8-1 | 按1個條件進行分組,8個限定條件,查詢一段時間內1個指標的最大值。 | SELECT max(usage_user) from cpu where (hostname = 'host_61885' or hostname = 'host_51710' or hostname = 'host_9380' or hostname = 'host_46446' or hostname = 'host_67623' or hostname = 'host_54344' or hostname = 'host_82215' or hostname = 'host_7458') and time >= '2020-11-01T19:38:15Z' and time < '2020-11-01T20:38:15Z' group by time(1m) |
| single-groupby-1-1-1 | 按1個條件進行分組,1個限定條件,查詢一段時間內1個指標的最大值。 | SELECT max(usage_user) from cpu where (hostname = 'host_6334') and time >= '2016-01-01T03:03:21Z' and time < '2016-01-01T04:03:21Z' group by time(1m) |
| cpu-max-all-1 | 按1個條件進行分組,查詢一段時間內所有指標的最大值。 | SELECT max(usage_user),max(usage_system),max(usage_idle),max(usage_nice),max(usage_iowait),max(usage_irq),max(usage_softirq),max(usage_steal),max(usage_guest),max(usage_guest_nice) from cpu where (hostname = 'host_1166') and time >= '2016-01-01T00:23:32Z' and time < '2016-01-01T08:23:32Z' group by time(1h) |