elasticsearch 第二篇(配置篇)
配置
在es啟動之前可以通過設置啟動命令行啟動參數、環境變量、文件等方式優化和配置es進行參數
環境變量
| ES_MIN_MEM | 256M | 用于配置java進程分配的最小內存 |
| ES_MAX_MEM | 1G | 用于配置java進程占用的最大內存 |
| ES_HEAP_SIZE | 32G | 設置ES_MIN_MEM,ES_MAX_MEM使用相同大小,ES推薦該配置并啟用mlockall |
| ES_DIRECT_SIZE | 2G | 直接內存并不是虛擬機運行時數據區的一部分,在nio中引入了基于通道和緩沖區的I/O方式,它可以使用native函數直接分配堆外內存,然后通過存儲在java堆中的DirectByteBuffer對象作為這塊內存的引用進行操作 |
| ES_USE_IPV4 | not empty/empty | 表示只使用IPV4, 若定義且值不為空則表示true |
系統配置
- 設置系統允許打開的文件描述符數量,建議設置為32k或64k, 可通過命令ulimit -n進行查詢,示例:ulimit -n 65535后重啟服務
可以在啟動時添加參數-Des.max-open-files=true查看允許打開的文件描述符數量
也可以通過RESTAPI查看nodes信息,輸入:GET /_nodes/process?pretty
輸出:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { "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 } } } } |
虛擬內存設置
es采用混合的mmapfs/niofs目錄默認存儲索引,在mmap計數太低時可能導致存儲器異常,可通過sysctl vm.max_map_count查詢,需要設置使用命令sysctl -w vm.max_map_count=262144或者在/etc/sysctl.conf中進行永久設置
內存設置
在操作系統為盡量多的使用內存,會將不用的應用程序內存換出存儲在swap文件系統中,交換會降低系統的性能和節點的穩定性,需要禁止,可通過三種方法進行設置:
-
禁用swap分區
在linux中可通過swapoff -a或在/etc/fstab中注釋所有行中swap的內容
在windows中在”系統屬性”->”高級”->”性能”->”高級”->”虛擬內存”中設置 -
配置swappiness
通過sysctl vim.swappiness=0減少內核進行的swap交換 -
mlockall
在*nux上使用mlockall或者在window上使用VirtualLocx盡量鎖定進程的地址空間到RAM,防止es內存被換出,可通過elasticsearch.yml進行配置
在es配置文件中添加:bootstrap.mlockall: true并重啟服務即可
通過RESTAPI查看nodes信息,輸入:GET /_nodes/process?pretty
在*nux系統下可能有兩個原因導致mlockall設置失敗:
1.es進程所屬用戶不具有鎖定內存的權限,需要使用ulimit -l進行設置
2./tmp目錄設置了noexec選項,可通過在啟動es時設置-Djna.tmpdir=/path/to/new/dir解決
es配置
在ES_HOME/conf目錄下兩個配置文件分別為elasticsearch.yml和logging.yml, elasticsearch.yml為es所有模塊提供配置, logging.yml為日志記錄提供配置
- elasticsearch.yum解讀
1.network設置
network.host: 設置bind host和publish
2.path設置
path.logs: 設置日志存儲目錄
path.data: 設置數據存儲目錄
3.cluster設置
cluster.name: 設置集群標識
4.node設置
node.name: 設置節點標識
5.index設置
es支持創建存儲到內存中的索引,可以在創建索引或者在進程啟動時指定默認存儲方式
a.在yum配置文件中配置index.store.type:memory
b.在es進程啟動時通過參數-Des.index.store.type=memory設置
c.在創建index時通過參數提交,輸入:
| 1 2 3 4 5 6 7 8 | PUT http://localhost:9200/m_index_test2/ { "index" :{ "store": { "type": "memory" } } } |
說明:存儲在內存中的索引在重啟服務器后數據會丟失
6.在yum配置文件中可設置為環境變量的引用,比如在環境變量中定義節點的名稱ES_NODE_NAME, 則可在yum配置文件中設置node.name=${ES_NODE_NAME}
7.可在es進程啟動時通過進程啟動參數進行設置,如-Des.node.name=silence
8.可以在es進程啟動時通過-Des.config=/path/to/config/file重新指定config文件
- logging.yum配置可參考log4j
總結
以上是生活随笔為你收集整理的elasticsearch 第二篇(配置篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elasticsearch 第三篇(安装
- 下一篇: elasticsearch 第一篇(入门