elasticsearch 使用优化

1、jvm内存最好为系统的一半,另一半交给luence使用

2、增加reflush刷新间隔(10s,减少段合并带来的性能影响)

3、增大集群间互相发现、心跳的时间间隔(防止脑裂和误操作导致的不可用)

4、每个分片的存储量尽量和jvm内存分配的大小一致(保证搜索的数据都在内存中,对搜索延迟至关重要)

5、关闭不必要的索引(只要索引开着,就会分配内存给这个索引)

6、提前建好template,设置好mapping(减少es在创建索引时的消耗,如果多了一个字段,es也会自动按照第一次提交的数据格式设置mapping)

7、可以尝试使用G1GC垃圾回收器(jvm内存大于8G时,G1GC的处理效率要高很多,只在client机器上使用过,未在data节点上使用过)

8、搜索条件尽可能的详细(越详细,搜索的耗时越小)

### 配置文件:

#### elasticsearch.yml

```

cluster.name: {{ cluster_name }}

node.name: {{ ansible_nodename }}

node.master: {{ node_master }}

node.data: {{ node_data }}

path.data: /data/elasticsearch/

path.logs: /data0/log-data/elasticsearch/

network.host: {{ inventory_hostname }}

network.bind_host: {{ inventory_hostname }}

network.publish_host: {{ inventory_hostname }}

transport.tcp.port: 9300

http.port: 9200

discovery.zen.fd.ping_timeout: 120s

discovery.zen.fd.ping_interval: 30s

discovery.zen.ping.unicast.hosts: [{{ hosts }}]

discovery.zen.minimum_master_nodes: {{ min_master_nodes }}

http.cors.allow-origin: "/.*/"

http.cors.enabled: true

node.ingest: {{ node_ingest }}

```

#### jvm.option

```

-Xms{{ es_heap }}m

-Xmx{{ es_heap }}m

-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=75

-XX:+UseCMSInitiatingOccupancyOnly

-XX:+AlwaysPreTouch

-server

-Xss1m

-Djava.awt.headless=true

-Dfile.encoding=UTF-8

-Djna.nosys=true

-Djdk.io.permissionsUseCanonicalPath=true

-Dio.netty.noUnsafe=true

-Dio.netty.noKeySetOptimization=true

-Dio.netty.recycler.maxCapacityPerThread=0

-Dlog4j.shutdownHookEnabled=false

-Dlog4j2.disable.jmx=true

-Dlog4j.skipJansi=true

-XX:+HeapDumpOnOutOfMemoryError

```

你可能感兴趣的:(elasticsearch 使用优化)