配置
在es啟動(dòng)之前可以通過設(shè)置啟動(dòng)命令行啟動(dòng)參數(shù)涂乌、環(huán)境變量、文件等方式優(yōu)化和配置es進(jìn)行參數(shù)
環(huán)境變量
名稱 | 示例 | 說明 |
---|---|---|
ES_MIN_MEM | 256M | 用于配置java進(jìn)程分配的最小內(nèi)存 |
ES_MAX_MEM | 1G | 用于配置java進(jìn)程占用的最大內(nèi)存 |
ES_HEAP_SIZE | 32G | 設(shè)置ES_MIN_MEM,ES_MAX_MEM使用相同大小,ES推薦該配置并啟用mlockall |
ES_DIRECT_SIZE | 2G | 直接內(nèi)存并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分,在nio中引入了基于通道和緩沖區(qū)的I/O方式,它可以使用native函數(shù)直接分配堆外內(nèi)存,然后通過存儲(chǔ)在java堆中的DirectByteBuffer對象作為這塊內(nèi)存的引用進(jìn)行操作 |
ES_USE_IPV4 | not empty/empty | 表示只使用IPV4, 若定義且值不為空則表示true |
系統(tǒng)配置
- 設(shè)置系統(tǒng)允許打開的文件描述符數(shù)量迅耘,建議設(shè)置為32k或64k, 可通過命令ulimit -n進(jìn)行查詢秉宿,示例:
ulimit -n 65535
后重啟服務(wù)
可以在啟動(dòng)時(shí)添加參數(shù)-Des.max-open-files=true查看允許打開的文件描述符數(shù)量
也可以通過RESTAPI查看nodes信息,輸入:GET /_nodes/process?pretty
輸出:
{
"cluster_name": "elasticsearch",
"nodes": {
"eE4eHSOWTK-j6IO7JJzcDQ": {
"name": "Specialist",
"transport_address": "inet[silence/192.168.1.111:9300]",
"host": "silence",
"ip": "192.168.1.111",
"version": "1.6.0",
"build": "cdd3ac4",
"http_address": "inet[/192.168.1.111:9200]",
"process": {
"refresh_interval_in_millis": 1000,
"id": 6212,
"max_file_descriptors": -1,
"mlockall": false
}
}
}
}
虛擬內(nèi)存設(shè)置
es采用混合的mmapfs/niofs目錄默認(rèn)存儲(chǔ)索引椭岩,在mmap計(jì)數(shù)太低時(shí)可能導(dǎo)致存儲(chǔ)器異常,可通過sysctl vm.max_map_count查詢璃赡,需要設(shè)置使用命令sysctl -w vm.max_map_count=262144
或者在/etc/sysctl.conf中進(jìn)行永久設(shè)置
內(nèi)存設(shè)置
在操作系統(tǒng)為盡量多的使用內(nèi)存判哥,會(huì)將不用的應(yīng)用程序內(nèi)存換出存儲(chǔ)在swap文件系統(tǒng)中,交換會(huì)降低系統(tǒng)的性能和節(jié)點(diǎn)的穩(wěn)定性碉考,需要禁止塌计,可通過三種方法進(jìn)行設(shè)置:
禁用swap分區(qū)
在linux中可通過swapoff -a
或在/etc/fstab中注釋所有行中swap的內(nèi)容
在windows中在"系統(tǒng)屬性"->"高級"->"性能"->"高級"->"虛擬內(nèi)存"中設(shè)置配置swappiness
通過sysctl vim.swappiness=0減少內(nèi)核進(jìn)行的swap交換mlockall
在*nux上使用mlockall或者在window上使用VirtualLocx盡量鎖定進(jìn)程的地址空間到RAM,防止es內(nèi)存被換出侯谁,可通過elasticsearch.yml進(jìn)行配置
在es配置文件中添加:bootstrap.mlockall: true
并重啟服務(wù)即可
通過RESTAPI查看nodes信息锌仅,輸入:GET /_nodes/process?pretty
在*nux系統(tǒng)下可能有兩個(gè)原因?qū)е耺lockall設(shè)置失敗:
1.es進(jìn)程所屬用戶不具有鎖定內(nèi)存的權(quán)限墙贱,需要使用ulimit -l進(jìn)行設(shè)置
2./tmp目錄設(shè)置了noexec選項(xiàng)热芹,可通過在啟動(dòng)es時(shí)設(shè)置-Djna.tmpdir=/path/to/new/dir解決
es配置
在ES_HOME/conf目錄下兩個(gè)配置文件分別為elasticsearch.yml和logging.yml, elasticsearch.yml為es所有模塊提供配置, logging.yml為日志記錄提供配置
- elasticsearch.yum解讀
1.network設(shè)置
network.host: 設(shè)置bind host和publish
2.path設(shè)置
path.logs: 設(shè)置日志存儲(chǔ)目錄
path.data: 設(shè)置數(shù)據(jù)存儲(chǔ)目錄
3.cluster設(shè)置
cluster.name: 設(shè)置集群標(biāo)識(shí)
4.node設(shè)置
node.name: 設(shè)置節(jié)點(diǎn)標(biāo)識(shí)
5.index設(shè)置
es支持創(chuàng)建存儲(chǔ)到內(nèi)存中的索引,可以在創(chuàng)建索引或者在進(jìn)程啟動(dòng)時(shí)指定默認(rèn)存儲(chǔ)方式
a.在yum配置文件中配置index.store.type:memory
b.在es進(jìn)程啟動(dòng)時(shí)通過參數(shù)-Des.index.store.type=memory設(shè)置
c.在創(chuàng)建index時(shí)通過參數(shù)提交惨撇,輸入:
PUT http://localhost:9200/m_index_test2/
{
"index" :{
"store": {
"type": "memory"
}
}
}
說明:存儲(chǔ)在內(nèi)存中的索引在重啟服務(wù)器后數(shù)據(jù)會(huì)丟失
6.在yum配置文件中可設(shè)置為環(huán)境變量的引用伊脓,比如在環(huán)境變量中定義節(jié)點(diǎn)的名稱ES_NODE_NAME, 則可在yum配置文件中設(shè)置node.name=${ES_NODE_NAME}
7.可在es進(jìn)程啟動(dòng)時(shí)通過進(jìn)程啟動(dòng)參數(shù)進(jìn)行設(shè)置,如-Des.node.name=silence
8.可以在es進(jìn)程啟動(dòng)時(shí)通過-Des.config=/path/to/config/file重新指定config文件
- logging.yum配置可參考log4j