被測環境:
騰訊雲
CPU | 內存 | 帶寬 | 版本號 |
4核 | 16G | 1Gbit/s | Ubuntu 4.8.4-2ubuntu1~14.04.3 |
地址:
被測程序:
Docker下安裝的influxDB 端口8086
壓測環境:
騰訊雲
CPU | 內存 | 帶寬 | 版本號 |
2核 | 8G | 1Gbit/s | Ubuntu 4.8.4-2ubuntu1~14.04.3 |
地址:
測試程序:
從github上找的influxdata公司提供的兩款測試工具
influx-stress 用於寫入測試
influxdb-comparisons用於查詢測試
測試場景:
寫入測試 | |
工具名稱 | influx-stress
|
工具github地址 | https://github.com/influxdata/influx-stress |
測試原理 | 該工具是通過go語言的fasthttp庫編寫的。 1. 會在服務器上創建一個數據庫stress 2. 然后創建一個MEASUREMENT(類似關系數據庫的表)名為ctr 該表有time,n.some三個字段 3. 不斷的向stress數據庫的ctr表插入數據,每次插入的數據都包含三個字段。每一條數據稱為一個points。 插入數據的方法是通過influxDB的HTTP API 發送請求(POST /write?db=stress)
|
測試命令 | influx-stress insert -r 60s –strict –pps 200000 –host http://10.XX.XX.XX:8086
|
測試程序運行結果 | ||
Points Per Second(發起請求) | Write Throughput(points/s) (數據庫實際處理結果) |
CPU平均利用率 |
200000 | 199713 | 33% |
300000 | 299280 | 45% |
400000 | 392873 | 62% |
500000 | 491135 | 80% |
600000 | 593542 | 90% |
650000 | 606036 | 93% |
700000 | 613791 | 95% |
測試結論:最大的吞吐量為每秒寫入60萬條數據。這之后,每秒發送的points再多,吞吐量也不會增加,同時CPU利用率已達90%。
查詢測試 | |
工具名稱 | influxdb-comparisons
|
工具github地址 | https://github.com/influxdata/influxdb-comparisons |
測試原理 | 該工具是通過go語言的fasthttp庫編寫的。 1. 會在服務器上創建一個數據庫benchmark_db 2. 然后創建9個MEASUREMENT :cpu,disk,diskio,kernel,mem,net,nginx,postgresl 每個measurement 有2160行數據。 3. 通過http GET請求”GET /query?db=benchmark_db“查詢cpu這張表。 查詢語句為:SELECT max(usage_user) from cpu where (hostname = ‘host_0’) and time >= ‘2016-01-01T01:16:32Z’ and time < ‘2016-01-01T02:16:32Z’ group by time(1m) 可以取出61條數據。
|
測試命令 | ./bulk_query_gen -query-type “1-host-1-hr” | ./query_benchmarker_influxdb -urls http://10.XX.XX.XX:8086 -limit 1000
|
測試程序運行結果 | ||||
查詢命令執行次數 (-limit) |
命令最短執行時間 | 每條命令平均執行時間 | 命令最大執行時間 | 總耗時 |
100 | 1.20ms | 1.69ms | 4.36ms | 0.2sec |
200 | 1.20ms | 1.71ms | 7.40ms | 0.3sec |
300 | 1.25ms | 1.73ms | 7.54ms | 0.5sec |
400 | 1.21ms | 1.71ms | 7.54ms | 0.7sec |
500 | 1.20ms | 1.70ms | 7.54ms | 0.8sec |
600 | 1.17ms | 1.67ms | 7.54ms | 1.0sec |
700 | 1.14ms | 1.66ms | 8.33ms | 1.2sec |
800 | 1.14ms | 1.65ms | 8.33ms | 1.3sec |
900 | 1.14ms | 1.63ms | 8.33ms | 1.5sec |
1000 | 1.14ms | 1.64ms | 8.33ms | 1.6sec |
測試結論:因為該工具最大只能測到讀取1000條數據,所以沒有繼續加大壓力測試。查詢操作的消耗時間因為受到被查詢表的數據量和查詢語句的復雜性影響,所以在influxDate官方給出的被查表和查詢語句下,算出來是平均每秒執行600次查詢。