elasticsearch相關配置

y37f 9年前發布 | 24K 次閱讀 ElasticSearch 搜索引擎

為了能調整我們應用的性能,可能我們必須要對elasticsearch的配置文件做一些相關配置以達到我們需要的.

在linux系統上,elasticsearch默認使用hybrid mmapfs / niofs來存儲索引文件,因此操作系統主要會通過mmap來限制存儲的空間,因此如果存儲空間滿了,那么會拋出異常,我們可以使用如下命令來更改設置

sysctl -w vm.max_map_count=262144

當然我們還可以修改/etc/sysctl.conf配置文件修改上述參數

注意在linux下我們一般會設置swap,但是設置swap會對elasticsearch的node性能產生影響,因此建議把swap關閉.

第二種方案也可以設置sysctl.conf中vm.swappiness需要設置為1

第三種方案可以在elasticsearch.yml配置文件修改bootstrap.mlockall:true

設置完之后,我們可以使用如下命令,查看bootstrap.mlockall是否生效

curl http://localhost:9200/_nodes/process?pretty

2.配置elasticsearch

2.1在elasticsearch.yml中我們可以設置

path:
        logs:/var/logs/elasticsearch
        data:/var/data/elasticsearch
        plugins:/var/data/plugins
        conf:/etc/conf

因此我們可以看出我們將日志輸出到/var/logs/elasticsearch,將索引數據保存在/var/data/elasticsearch目錄下,插件加載的位置設置為/var/data/plugins,配置文件放置位置設置為/etc/conf。

當然我們還能直接path.logs:/var/logs/elasticsearch這樣配置

2.2配置集群名稱,節點名稱

cluster:
    name:mycluster
node:
    name:mynode

上述設置了集群名稱為mycluster,當前elasticsearch的節點名稱為mynode

2.3設置索引存儲方式

index:
    store:
        type:memory

在這里我們設置ile索引的存儲方式是內存,其實這樣設置在yml文件中不是一個很好的配置,因為配置后,會對之后我們創建的所有索引都會以memory來存儲,因此最好的設置是使用http接口對指定的數據庫進行配置

比如:

$ curl -XPUT http://localhost:9200/kimchy/ -d \
'
index :
    store:
        type: memory
'

也就是對數據庫kimchy設置存儲方式為memory。

3.配置http接口的數據操作。

3.1一般我們會通過http接口api形式對索引數據進行crud操作,這個時候我們要配置elasticsearch.yml中的http模塊。

http.enabled:true

其他相關配置參數

http.port http綁定端口,默認可以設置9200-9300這個范圍
http.bind_host 綁定的http服務的域名。默認跟http.host或者network.bind_host一樣
http.publish_host 客戶端訪問的http地址,默認和http.host或network.publish_host一致
http.host 用來設置http.bind_host和http.publish_host
http.max_content_length http請求的最大內容大小
http.max_initial_line_length http地址訪問url的最大長度,默認為4kb
http.compression 是否支持壓縮 (用 Accept-Encoding). 默認為false
http.compression_level 定義壓縮級別,默認為6
http.cors.enabled 是否支持跨域,默認為false
http.cors.allow-origin 當設置允許跨域,默認為*,表示支持所有域名,如果我們只是允許某些網站能訪問,那么可以使用正則表達式。比如只允許本地地址。 /https?:\/\/localhost(:[0-9]+)?/
http.cors.max-age 瀏覽器發送一個“預檢”OPTIONS請求,以確定CORS設置。最大年齡定義多久的結果應該緩存。默認為1728000(20天)
http.cors.allow-methods 允許跨域的請求方式,默認OPTIONS,HEAD,GET,POST,PUT,DELETE
http.cors.allow-headers 跨域允許設置的頭信息,默認為X-Requested-With,Content-Type,Content-Length
http.cors.allow-credentials 是否返回設置的跨域Access-Control-Allow-Credentials頭,如果設置為true,那么會返回給客戶端。
http.pipelining 是否打開HTTP管線化, 默認為true
http.pipelining.max_events 事件的最大數量被排隊在存儲器之前一個HTTP連接被關閉時,默認為10000。


4.設置索引緩沖區

elasticsearch在處理索引的時候會存在一個索引緩沖buffer,我們可以為其設置需要分配的緩沖buffer內存大小,索這是一個全局設置。

indices.memory.index_buffer_size 接受任何百分比或字節大小值。其默認值為10%,這意味著分配給一個節點的總存儲器的10%將被用作索引的緩沖區大小。如果百分比被使用時,也能夠設定min_index_buffer_size和max_index_buffer_size
min_index_buffer_size (默認為48MB)
max_index_buffer_size

(默認為無界)。

indices.memory.index_buffer_size

允許設置為每分片分配給它自己的索引緩沖存儲器中的下限。它默認為4MB。

indices.ttl.interval

允許設置多久過期的文件會被自動刪除。默認值是60s。

indices.ttl.bulk_size

設置批量處理的命令大小。默認值是10000。

5.設置管理recovery的策略:

indices.recovery.concurrent_streams 默認是3
indices.recovery.file_chunk_size 默認512kb
indices.recovery.translog_ops 默認1000
indices.recovery.translog_size 默認true
indices.recovery.compress 默認512kb
indices.recovery.max_bytes_per_sec 默認20mb
indices.recovery.max_size_per_sec 0.90.1去掉,用indices.recovery.max_bytes_per_sec代替

6.設置對存儲進行限流:

indices.store.throttle.type 可以是merge (默認), not或者all
indices.store.throttle.max_bytes_per_sec 默認20mb


7.network設置

一個節點的多個模塊都用到了網絡基本配置,例如transport模塊和HTTP模塊。 節點級別的網絡配置可以用來設置所有基于網絡的模塊的通用配置(除了被每個模塊明確覆蓋的那些配置項)。

network.bind_host用來設置綁定的ip地址, 默認綁定anyLocalAddress (0.0.0.0或者::0)。

network.publish_host配置其他節點和本節點通信的地址。 這個當然不能是anyLocalAddress, 默認是第一個非回環地址或者本機地址。

network.host設置是一個簡化設置, 它自動設置network.bind_hostnetwork.publish_host為同一個值。

兩個設置都可以配置為主機ip地址或者主機名, 還可以設置為下表中列出來的值。

local

本機ip地址

_non_loopback_

第一個非loopback地址

_non_loopback:ipv4_

第一個非loopback的ipv4地址

_non_loopback:ipv6_

第一個非loopback的ipv6地址

[networkInterface]

指定網卡的IP地址. 例如 en0

[networkInterface]:ipv4

指定網卡的IPv4地址. 例如 en0:ipv4

[networkInterface]:ipv6

指定網卡的IPv6地址. 例如 en0:ipv6

_non_loopback:ipv6_

第一個非loopback的ipv6地址

 8.cloud-aws

 如果安裝了cloud-aws插件, 下表列出來值也是有效的設置:

ec2:privateIpv4 The private IP address (ipv4) of the machine
ec2:privateDns The private host of the machines
ec2:publicIpv4 The public IP address (ipv4) of the machine
ec2:publicDns The public host of the machines
ec2 Less verbose option for the private ip address
ec2:privateIp Less verbose option for the private ip address
ec2:publicIp Less verbose option for the public ip address

9.tcp設置

任何使用TCP的組件 (比如HTTP, Transport和Memcached)共享下面的設置:

network.tcp.no_delay 啟用或禁用tcp no delay。 默認是true.
network.tcp.keep_alive 啟用或禁用tcp keep alive。 默認不設置
network.tcp.reuse_address 地址是否應該被重用,在非windows的機器上默認是true
network.tcp.send_buffer_size tcp發送緩沖區的大小。 默認不設置
network.tcp.receive_buffer_size tcp接收緩沖區的大小。 默認不設置
 本文由用戶 y37f 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!