Influxdb 1.2版本優化之旅(經驗證,適用於influxdb1.4版本)
阿新 • • 發佈:2019-02-19
一、【常見異常】
1、max series per database exceeded 異常
err = max series per database exceeded:
java.lang.RuntimeException: {"error":"max series per database exceeded:
at org.influxdb.impl.InfluxDBImpl.execute(InfluxDBImpl.java:266)
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:167)
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:157)
資料量太大之後,再每次進行連續查詢的時候,會出現此異常,同時也會造成程式也會報類似的異常
修改配置檔案:vim /etc/influxdb/influxdb.conf
# 最大插入series記錄數
max-series-per-database = 10000000
# 最大插入的tag值
max-values-per-tag = 10000000
2、err = max number of points reached
[coordinator]
write-timeout = "10s"
max-concurrent-queries = 0
query-timeout = "0"
log-queries-after = "10s"
max-select-point = 0
max-select-series = 0
max-select-buckets = 0
max-concurrent-queries
max-concurrent-queries項是配置最大的可執行的命令數,此項值為零則表示無限制。
如果你執行的命令數超過這個配置項的數量,則會報如下錯誤:
query-timeout
query-timeout項用來配置命令的超時時間,如果命令的執行時長超過了此時間,則influxDB會殺掉這條語句並報出如下錯誤:
如果配置了連續查詢,那麼最好不要配置query-timeout超時時間,因為隨著資料量的增加,連續查詢生成的資料所需要的時間更長,配置之後會導致資料生成不成功。
log-queries-after
log-queries-after用來配置執行時長為多少的語句會被記錄為慢查詢。配置為0則表示不會記錄這些語句。
比如,改項配置為“1s”,則執行時長超過1秒的語句會被標記為慢查詢,並記錄在日誌裡。
max-select-point(在point可控的情況下,可以設定此引數 )
max-select-point配置一次可查詢出的資料量,因為在influxDB中一條資料看做一個點,因此這個配置叫每次可查詢的最大的點數。
配置為0則表示無限制,如果查詢出來的數量大於此項配置,則influxDB會殺掉這條語句並報出如下錯誤:
max-select-series用來配置influxDB語句中最多可處理的series的數量,如果你的語句中要處理的series數量大於此配置,則influxDB不會執行這條語句並且會報出如下錯誤:
log-enabled = false //預設為true,會生成很多http請求的資料,建議關閉,不然日誌檔案跟插入資料量成正比,大致1:1的關係
max-row-limit = 10000 //查詢頁面顯示最大記錄數
[continuous_queries] //連續查詢
log-enabled = true //開啟連續查詢的日誌,有助於異常發現
enabled = true //開啟連續查詢
[data]
enabled = true
dir = "/disk2/influxdb/data" ##資料儲存的目錄
wal-dir = "/disk2/influxdb/wal" //wal資料目錄
wal-logging-enabled = true
# 4294967296(b)=4G 最大快取資料,先快取再寫入
cache-max-memory-size = 4294967296
參考地址:http://www.linuxdaxue.com/influxdb-query-management.html
1、max series per database exceeded 異常
err = max series per database exceeded:
java.lang.RuntimeException: {"error":"max series per database exceeded:
at org.influxdb.impl.InfluxDBImpl.execute(InfluxDBImpl.java:266)
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:167)
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:157)
資料量太大之後,再每次進行連續查詢的時候,會出現此異常,同時也會造成程式也會報類似的異常
修改配置檔案:vim /etc/influxdb/influxdb.conf
# 最大插入series記錄數
max-series-per-database = 10000000
# 最大插入的tag值
max-values-per-tag = 10000000
2、err = max number of points reached
[continuous_querier] 2017/02/10 08:02:42 error executing query: END: err = max number of points reached
[coordinator]
write-timeout = "10s"
max-concurrent-queries = 0
query-timeout = "0"
log-queries-after = "10s"
max-select-point = 0
max-select-series = 0
max-select-buckets = 0
max-concurrent-queries
max-concurrent-queries項是配置最大的可執行的命令數,此項值為零則表示無限制。
如果你執行的命令數超過這個配置項的數量,則會報如下錯誤:
ERR: max concurrent queries reached
query-timeout
query-timeout項用來配置命令的超時時間,如果命令的執行時長超過了此時間,則influxDB會殺掉這條語句並報出如下錯誤:
ERR: query timeout reached
如果配置了連續查詢,那麼最好不要配置query-timeout超時時間,因為隨著資料量的增加,連續查詢生成的資料所需要的時間更長,配置之後會導致資料生成不成功。
log-queries-after
log-queries-after用來配置執行時長為多少的語句會被記錄為慢查詢。配置為0則表示不會記錄這些語句。
比如,改項配置為“1s”,則執行時長超過1秒的語句會被標記為慢查詢,並記錄在日誌裡。
max-select-point(在point可控的情況下,可以設定此引數 )
max-select-point配置一次可查詢出的資料量,因為在influxDB中一條資料看做一個點,因此這個配置叫每次可查詢的最大的點數。
配置為0則表示無限制,如果查詢出來的數量大於此項配置,則influxDB會殺掉這條語句並報出如下錯誤:
ERR: max number of points reached
max-select-seriesmax-select-series用來配置influxDB語句中最多可處理的series的數量,如果你的語句中要處理的series數量大於此配置,則influxDB不會執行這條語句並且會報出如下錯誤:
ERR: max select series count exceeded: <query_series_count> series
[http]log-enabled = false //預設為true,會生成很多http請求的資料,建議關閉,不然日誌檔案跟插入資料量成正比,大致1:1的關係
max-row-limit = 10000 //查詢頁面顯示最大記錄數
[continuous_queries] //連續查詢
log-enabled = true //開啟連續查詢的日誌,有助於異常發現
enabled = true //開啟連續查詢
[data]
enabled = true
dir = "/disk2/influxdb/data" ##資料儲存的目錄
wal-dir = "/disk2/influxdb/wal" //wal資料目錄
wal-logging-enabled = true
# 4294967296(b)=4G 最大快取資料,先快取再寫入
cache-max-memory-size = 4294967296
參考地址:http://www.linuxdaxue.com/influxdb-query-management.html