原地址:https://docs.influxdata.com/influxdb/v1.6/guides/hardware_sizing/
警告!此頁面記錄了不再積極開發的InfluxDB的早期版本。InfluxDB v1.7是InfluxDB的最新穩定版本。
本指南為InfluxDB提供了一般硬件建議,並解決了有關硬件大小調整的一些常見問題。這些建議僅適用於時間結構合並樹(TSM
)存儲引擎,這是InfluxDB 1.4唯一可用的存儲引擎。使用未轉換 b1
或分bz1
片運行舊版本InfluxDB的用戶可能具有不同的性能特征。有關更多詳細信息,請參閱InfluxDB 0.9大小調整指南。
單節點還是群集?
InfluxDB單節點實例是完全開源的。InfluxDB集群需要我們的閉源商業產品。單節點實例不提供冗余。如果服務器不可用,則寫入和查詢將立即失敗。群集提供高可用性和冗余。多個數據副本分布在多個服務器上,任何一個服務器的丟失都不會對集群產生重大影響。
如果您的性能要求屬於中等或低負載范圍,那么您可能會使用InfluxDB的單個節點實例。如果您的性能要求中至少有一個屬於可能不可行的類別,那么您可能需要使用群集在多個服務器之間分配負載。
單個節點的一般硬件准則
我們通過每秒寫入的字段數,每秒的查詢數以及唯一系列的數量來定義您將在InfluxDB上放置的負載。根據您的負載,我們提出一般的CPU,RAM和IOPS建議。
InfluxDB應該在本地連接的SSD上運行。任何其他存儲配置都具有較低的性能特征,並且可能無法從正常處理中的小中斷中恢復。
加載 | 每秒字段寫入 | 每秒中等查詢次數 | 獨特系列 |
---|---|---|---|
低 | <5千 | <5 | <10萬 |
中等 | <25萬 | <25 | <100萬 |
高 | > 25萬 | > 25 | > 100萬 |
可能不可行 | > 75萬 | > 100 | > 1000萬 |
注意:查詢對系統的影響差異很大。
簡單查詢:
- 幾乎沒有函數也沒有正則表達式
- 是時間限制在幾分鍾,幾小時或一天
- 通常在幾毫秒到幾十毫秒內執行
中等查詢:
- 有多個函數和一個或兩個正則表達式
- 也可能有復雜的
GROUP BY
條款或抽樣多個星期的時間范圍- 通常在幾百或幾千毫秒內執行
復雜查詢:
- 具有多個聚合或轉換函數或多個正則表達式
- 可以抽樣幾個月或幾年的非常大的時間范圍
- 通常需要多秒才能執行
低負荷建議
- CPU:2-4核
- RAM:2-4 GB
- IOPS:500
適度的負載建議
- CPU:4-6核
- RAM:8-32 GB
- IOPS:500-1000
高負荷建議
- CPU:8+核心
- RAM:32+ GB
- IOPS:1000+
可能是不可行的負荷
這種規模的表現是一項重大挑戰,可能無法實現。有關調整系統的幫助,請通過sales@influxdb.com與我們聯系。
群集的一般硬件准則
元節點
群集必須至少有三個獨立的元節點才能在丟失服務器后繼續存在。具有2n + 1
元節點的集群可以容忍元節點的丟失n
。群集應該具有奇數個元節點。沒有理由擁有偶數個元節點,並且它可能導致某些配置出現問題。
元節點不需要很大的計算能力。無論群集負載如何,我們建議以下元節點:
普遍推薦
- CPU:1-2核心
- RAM:512 MB - 1 GB
- IOPS:50
數據節點
只有一個數據節點的集群有效,但沒有數據冗余。冗余由寫入數據的保留策略上的復制因子設置。群集可能會丟失n - 1
數據節點並仍然返回完整的查詢結果,其中n
是復制因子。為了在群集內進行最佳數據分發,InfluxData建議使用偶數個數據節點。
群集數據節點的硬件建議與獨立實例建議類似。數據節點應始終至少具有2個CPU內核,因為它們必須處理常規讀寫流量以及群集內讀寫流量。由於群集通信開銷,群集中的數據節點處理的吞吐量低於同一硬件上的獨立實例。
加載 | 每個節點每秒寫入字段 | 每個節點每秒中等查詢 | 每個節點的唯一系列 |
---|---|---|---|
低 | <5千 | <5 | <10萬 |
中等 | <10萬 | <25 | <100萬 |
高 | > 10萬 | > 25 | > 100萬 |
可能不可行 | > 50萬 | > 100 | > 1000萬 |
注意:查詢對系統的影響差異很大。
簡單查詢:
- 幾乎沒有函數也沒有正則表達式
- 是時間限制在幾分鍾,幾小時或一天
- 通常在幾毫秒到幾十毫秒內執行
中等查詢:
- 有多個函數和一個或兩個正則表達式
- 也可能有復雜的
GROUP BY
條款或抽樣多個星期的時間范圍- 通常在幾百或幾千毫秒內執行
復雜查詢:
- 具有多個聚合或轉換函數或多個正則表達式
- 可以抽樣幾個月或幾年的非常大的時間范圍
- 通常需要多秒才能執行
低負荷建議
- CPU:2個核心
- RAM:2-4 GB
- IOPS:1000
適度的負載建議
- CPU:4-6
- 內存:8-32GB
- IOPS:1000+
高負荷建議
- CPU:8+
- RAM:32+ GB
- IOPS:1000+
企業Web節點
Enterprise Web服務器主要是具有類似負載要求的HTTP服務器。對於大多數應用程序,它不需要非常強大。群集僅與一個Web服務器一起運行,但為了實現冗余,可以將多個Web服務器連接到單個后端Postgres數據庫。
注意:生產集群不應使用SQLite數據庫,因為它不允許冗余Web服務器,也不能像Postgres那樣優雅地處理高負載。
普遍推薦
- CPU:1-4核心
- RAM:1-2 GB
- IOPS:50
我什么時候需要更多內存?
通常,擁有更多RAM有助於查詢返回更快。添加更多RAM沒有已知的缺點。
影響RAM需求的主要組件是系列基數。即使有大量RAM,大約1000萬或更高的系列基數也可能導致OOM失敗。如果是這種情況,您通常可以通過重新設計架構來解決問題。
相對於系列基數的RAM需求的增加是指數的,其中指數在1到2之間:
我需要什么樣的存儲空間?
InfluxDB旨在運行在SSD上。InfluxData不測試硬盤驅動器或網絡存儲設備,我們不建議將它們用於生產。旋轉磁盤驅動器的性能要低一個數量級,即使是中等負載,系統也可能會崩潰。為獲得最佳結果,InfluxDB服務器必須在存儲系統上至少具有1000 IOPS。
請注意,當群集從停機時間恢復時,群集數據節點的IOPS要求非常高。建議存儲系統至少具有2000 IOPS以便快速恢復。低於1000 IOPS,群集可能無法從短暫停機中恢復。
我需要多少存儲空間?
數據庫名稱,度量,標記鍵,字段鍵和標記值僅存儲一次,並始終作為字符串存儲。只有字段值和時間戳存儲每點。
非字符串值大約需要三個字節。字符串值需要由字符串壓縮確定的可變空間。
我應該如何配置我的硬件?
在生產環境中運行InfluxDB時,wal
目錄和data
目錄應位於不同的存儲設備上。當系統處於大量寫入負載時,此優化可顯着減少磁盤爭用。如果寫入負載高度可變,這是一個重要的考慮因素。如果寫入負載變化不超過15%,則可能不需要優化。