Elasticsearch 6 重要參數配置

採用zip或tar.gz的二進制包方式安裝的ES,須要配置一系列參數,其中重要參數配置以下:node

1、 ElasticSearch參數配置bootstrap

1. data和logs路徑配置緩存

若是使用.zip或.tar.gz歸檔文件,則數據和日誌目錄是$ES_HOME的子文件夾。若是這些重要的文件夾保留在它們的默認位置,則在將Elasticsearch升級到新版本時,刪除它們的風險很高,建議進行修改服務器

path: logs: /var/log/elasticsearch data: /var/data/elasticsearch

其中 data目錄能夠設置多個路徑微信

path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3

2. 集羣名稱網絡

默認的集羣名稱均爲elasticsearch,若有多套集羣,則必須修改app

cluster.name: syslogs-dev

3. 節點名稱dom

默認狀況下,Elasticsearch將使用隨機生成的UUID的前七個字符做爲節點id。請注意,節點id是持久化的,在節點重啓時不會更改,所以默認的節點名稱也不會更改。建議配置一個更有意義的名稱,它還具備在從新啓動節點後持久化的優勢。jvm

node.name: syslogs-data-2

或者用主機名(hostname)做爲節點名elasticsearch

node.name: prod-data-2

4. network.host

默認狀況下,Elasticsearch只綁定到環回地址,例如。127.0.0.1 (::1)。但此配置只能在同一服務器上運行單個節點。爲了在其餘服務器上造成具備節點的集羣,節點須要綁定到一個非環回地址。雖然有許多網絡設置,但一般只須要配置network.host

network.host: 192.168.1.10

5. 發現方式設置

Elasticsearch使用名爲「Zen discovery」的自定義發現實現節點到節點的集羣選擇。生產上,應該配置兩個重要的發現設置:

discovery.zen.ping.unicast.hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com 

discovery.zen.minimum_master_nodes: 2

其中,discovery.zen.ping.unicast.hosts 能夠設置爲ip:port 、ip(使用默認端口時)、域名(可解析的)其中任意一種都可;

          discovery.zen.minimum_master_nodes 設置的值建議設置爲 (master_eligible_nodes / 2) + 1 

6. 堆大小設置

默認狀況下,Elasticsearch告訴JVM使用大小爲最小和最大1 GB的堆。在 jvm.options  文件裏 經過Xms(最小堆大小)和Xmx(最大堆大小)設置的選項。一般設置規則以下:

a)讓最小堆大小(Xms)和最大堆大小(Xmx)相等; b)Elasticsearch可用的堆越多,用於緩存的內存就越多。可是請注意,過多的堆會致使長時間的垃圾收集暫停; c)將Xmx設置爲不超過物理RAM的50%,以確保有足夠的物理RAM留給內核文件系統緩存; d)不要將Xmx設置爲JVM用於壓縮對象指針的截止值之上(壓縮的oops);確切的界限有所不一樣,但接近32 GB。

例如:

-Xms2g -Xmx2g 

還能夠經過環境變量設置堆大小,例如,經過ES_JAVA_OPTS設置這些值

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch 

7. JVM堆轉儲路徑

能夠在 jvm.options 中的  -XX:HeapDumpPath=...進行配置,若是指定一個目錄,JVM將根據運行實例的PID爲堆轉儲生成一個文件名。若是指定一個固定的文件名而不是目錄,那麼當JVM須要對內存不足異常執行堆轉儲時,該文件必須不存在,不然堆轉儲將失敗。

8. GC 日誌

默認狀況下,Elasticsearch啓用GC日誌。這些都是在jvm中配置的。選項並默認爲與Elasticsearch日誌相同的默認位置。默認配置每64 MB旋轉一第二天志,最多能夠消耗2 GB的磁盤空間

9. temp路徑

默認狀況下,Elasticsearch使用一個私有臨時目錄,啓動腳本在系統臨時目錄下建立該臨時目錄,默認狀況爲/tmp。但若是最近沒有訪問/tmp中的文件和目錄,系統實用程序將清除這些文件和目錄。可是,若是您打算在Linux上長時間運行.tar.gz發行版,那麼應該考慮爲Elasticsearch建立一個專用的臨時目錄,而不是在清除舊文件和目錄的路徑下。這個目錄應該設置權限,這樣只有運行Elasticsearch的用戶才能訪問它。而後,在開始Elasticsearch以前,將$ES_TMPDIR環境變量設置爲指向它

10. JVM致命錯誤日誌

默認狀況下,Elasticsearch配置JVM將致命錯誤日誌寫入默認日誌目錄/var/log/elasticsearch。若是此路徑不適合接收日誌,則應修改jvm.options 條目-XX:ErrorFile=…

 

2、 重要的系統參數配置

1 . ulimit設置

建議設置爲65535,修改的2種方式以下:

a) 修改/etc/security/limits.conf.文件

elasticsearch  -  nofile  65536

b) root用戶直接命令行修改

sudo su ulimit -n 65536 su elasticsearch 

2. 禁用swapping

a) 能夠經過關閉swap方式防止使用swap,例如臨時運行命令行處理

sudo swapoff -a

要永久禁用它,您須要編輯/etc/fstab文件並註釋掉包含單詞swap的任何行

b) Linux系統上的另外一個方式修改vm.swappiness爲1。這減小了內核交換的趨勢,而且在正常狀況下不該該致使交換,同時仍然容許整個系統在緊急狀況下交換。

c)在Linux/Unix系統上使用mlockall,或者在Windows上使用VirtualLock,嘗試將進程地址空間鎖定到RAM中,防止任何Elasticsearch內存被交換出去,這能夠經過在config/elasticsearch.yml文件中配置一行來實現

bootstrap.memory_lock: true

3. 系統控制文件設置

Elasticsearch默認使用mmapfs目錄存儲索引。默認操做系統對mmap計數的限制可能過低,這可能致使內存異常。修改方式以下:

a) 修改 /etc/sysctl.conf文件

系統控制文件是管理系統中的各類資源控制的配置文件。ES須要開闢一個65536字節以上空間的虛擬內存。Linux默認不容許任何用戶和應用直接開闢虛擬內存。
新增內容爲:

vm.max_map_count=262144

使用命令: sysctl -p 讓系統控制權限配置生效。

b) root用戶下命令行方式臨時設置

sysctl -w vm.max_map_count=262144

4. 線程數設置

Elasticsearch爲不一樣類型的操做使用不一樣的線程池。須要確保Elasticsearch用戶能夠建立的線程數至少爲4096。能夠用以下方式設置:

修改/etc/security/limits.d/90-nproc.conf 設置爲 4096

* soft nproc 4096 root soft nproc unlimited

 

5. DNS cache設置

在 JVM options中設置  es.networkaddress.cache.ttl 和 es.networkaddress.cache.negative.ttl,默認爲60s和10s

 

 

 

耿小廚已開通我的微信公衆號,想進一步溝通或想了解其餘文章的同窗能夠關注我

相關文章
相關標籤/搜索