Elasticsearch 常見問題匯總及解決姿勢(后續會持續更新)


 

1、集群存儲資源高水位 異常

Caused by: org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=cluster_block_exception, reason=blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];]
        at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177)
        at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:653)
        at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:628)
        at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:535)
        at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:508)
        at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:348)
        at com.cy.es.connection.ClientProxy.index(ClientProxy.java:118)
        at com.cy.es.connection.CyESClient.index(CyESClient.java:91)
        at 

當Elasticsearch集群中有節點掛掉,我們可以去查看集群的日志信息查找錯誤,不過在查找錯誤日志之前,我們可以通過elasticsearch的cat api簡單判斷下各個節點的狀態,包括磁盤,heap,ram的使用情況,先做初步判斷。

查看集群資源使用情況

get /_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master 

eg:

localhost:9200/_cat/nodes?v&h=http,version,jdk,disk.total,disk.used,disk.avail,disk.used_percent,heap.current,heap.percent,heap.max,ram.current,ram.percent,ram.max,master 

 返回:

http          version jdk       disk.total disk.used disk.avail disk.used_percent heap.current heap.percent heap.max ram.current ram.percent ram.max master
10.0.0.4:9200 6.3.1   1.8.0_181       29gb     3.3gb     25.6gb             11.72        254mb            7    3.3gb       6.2gb          92   6.8gb -
10.0.0.5:9200 6.3.1   1.8.0_181       29gb     3.3gb     25.6gb             11.71      195.5mb            5    3.3gb       6.2gb          91   6.8gb -
10.0.0.6:9200 6.3.1   1.8.0_181       29gb     3.4gb     25.6gb             11.74      293.6mb            8    3.3gb       6.2gb          92   6.8gb *

此處的disk占用,heap使用量等都是監測集群狀態的關鍵參數,更多參數可以官網cat node api參考此處。

說明: 磁盤空間大於95%時,es會啟動保護機制,設置成只讀模式,導致es自動關閉了索引的寫功能,只能進行讀取或者刪除。

 

需要手動擴容或者刪除沒必要數據;集群正常后,需要對指定索引執行如下命令

PUT /index/_settings 

{ 
  "index.blocks.read_only_allow_delete": null 
}

或者:

PUT /index/_settings 


{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}

 

 全部索引:

PUT /*/_settings 

{ 
  "index.blocks.read_only_allow_delete": null 
}

或者

PUT _settings


{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}

 

全部索引: 

指定索引: 

一旦在存儲超過95%的磁盤中的節點上分配了一個或多個分片的任何索引,該索引將被強制進入只讀模式,所以新產生的日志不能入庫,也不能清除。

2、系統資源配置問題

問題:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]


解決辦法:
1. 修改配置sysctl.conf

sudo vi /etc/sysctl.conf 


添加如下配置:

vm.max_map_count=655360


執行命令:

sudo sysctl -p


重新啟動elasticsearch,即可啟動成功。

=====================================================

問題:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

 原因:普通用戶執行問題
 解決:切換到root用戶,編輯

/etc/security/limits.conf  

添加,重啟永久生效

 # (elasticsearch 是用戶名)
 elasticsearch hard nofile 65536  
 elasticsearch soft nofile 65536    

=====================================================

 問題:

max number of threads [1024] for user [elk] is too low, increase to at least [2048]

原因:普通用戶執行操作數低
解決:切換到root用戶,進入limits.d目錄下修改配置文件。

vi /etc/security/limits.d/90-nproc.conf

修改如下內容:

* soft nproc 1024

#修改為

* soft nproc 2048

或者

切換到root用戶,編輯limits.conf 添加類似如下內容

vi /etc/security/limits.conf

添加如下內容:(針對所有用戶生效)

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

要重新登錄生效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM