ES6.3
应用场景为:重写入轻查询
关闭swap分区 swapoff -a 临时生效 vim /etc/fstab 永久生效
内存设置不建议超过32G: 对于大内存主机设备,ES JVM内存建议不要超过32G,配置为31G即可
更换默认垃圾回收器(默认回收器为CMS) 原配置: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly 改为: -XX:+UseG1GC -XX:G1HeapRegionSize=32M
注释:使用G1回收器时,建议JDK版本大于1.8_131; 目前甜橙使用版本:1.8_201
设置合理的分片数,建议单个分片大小控制在30GB左右 比如数据量为1Tb的索引,建议分片数量控制在35个左右为佳
按需设置副本数,如数据不重要,可考虑不设副本; PUT /索引名称/_settings { "index": { "number_of_replicas": "0" } }
写入线程池优化: thread_pool.write.size: 65(默认为CPU核数,最大为cpu核数+1) thread_pool.write.queue_size: 1000(默认为200,建议调整为最大1000)
调整index buffer的大小(默认为jvm内存的10%) indices.memory.index_buffer_size: 25%
调整index.refresh_interval时间 PUT /索引名称/_settings { "settings": { "refresh_interval": "120s" } }
调整Translog配置: PUT /索引名称/_settings { "index.translog.durability" : "async", "index.translog.flush_threshold_size" : "1024mb", "index.translog.sync_interval" : "120s" }
注:"index.translog.sync_interval" : "120s" 此参数无法调整正在写入的索引,需先将索引关闭后方可配置; 关闭索引: POST /索引名称/_CLOSE 开启索引: POST /索引名称/_OPEN
调整Segment Merge操作: PUT /索引名称/_settings { "index.merge.policy.max_merged_segment": "2gb", "index.merge.scheduler.max_thread_count": 5, ”index.merge.policy.max_merge_at_once": 30, "index.merge.policy.segments_per_tier": 30 }
横向扩展数据节点: 对于大资源主机,内存超过128G的主机而言 建议充分利用起性能,可部署多实例(数据节点); 建议加上以下配置: cluster.routing.allocation.same_shard.host: true cluster.routing.allocation.cluster_concurrent_rebalance: 10 cluster.routing.allocation.node_concurrent_recoveries: 10
##设置恢复速率(默认为2GB): PUT _cluster/settings { "persistent": { "indices.recovery.max_bytes_per_sec": "10240m" } }
拆分大索引 对于大数据量的索引(2T),建议拆分为多个小索引; 按日切割或者按小时切割;
增大每批次入库数据量,这个量大小需要不断调整,太大不好,太小也好; 甜橙单个server每批次入库数量为6000
最终配置: "index.translog.durability" : "async" "index.translog.flush_threshold_size" : "1024mb" "index.translog.sync_interval" : "120s" "index.merge.policy.max_merged_segment": "2gb" "index.translog.sync_interval" : "120s"