ES优化总结(特别是在bulk大量数据到ES的时候),持续续更新中。。。。
1、refresh时间间隔
优化点: 减少刷新频率,降低潜在的写磁盘性能损耗, 默认的刷新时间间隔是1s,对于写入量很大的场景,这样的配置会导致写入吞吐量很低,适当提高刷新间隔,可以提升写入量,代价就是让新写入的数据在60s之后可以被搜索,新数据可见的及时性有所下降。
在bulk大量数据到ES集群的时候可以关闭刷新频率,把其值设置为-1就是关闭了刷新频率,在导入完之后设置成合理的值即可,例如30s或者60s即可。
curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
"index" : {
"refresh_interval" : "-1"
}
}'
2、replica数目设置
在bulk大量数据到ES集群的可以把副本数设置为0,在数据导入完成之后再设置为1或者你集群的适合的数目。
curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
3、merge相关参数
参考官网建议:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-merge.html
"index.merge.policy.floor_segment": "100mb"
"index.merge.scheduler.max_thread_count": "1"
"index.merge.policy.max_merged_segment":"100m"
curl -XPUT '192.168.2.181:9200/index/_settings?pretty' -d '
{
"index.merge.policy.floor_segment": "100mb",
"index.merge.scheduler.max_thread_count": "1",
"index.merge.policy.max_merged_segment":"100m"
}'
4、Translog优化建议 参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index-modules-translog.html#index-modules-translog
{
"index.translog.flush_threshold_size": "100m"
}
5、修改配置文件调整ES的JVM内存大小
这个值不能超过32g,一般机器好点设置成十几个g速度就非常快了。具体要看自己机器的内存(使用free命令查看,千万不要超过自己机器内存啦,balala..)
vim config/jvm.options
-Xms12g
-Xmx12g
6、去掉mapping中_all字段
Index中默认会有_all这个字段,默认会把所有字段的内容都拷贝到这一个字段里面,这样会给查询带来方便,但是会增加索引时间和索引尺寸。
"_all":{"enabled":false}
例如:
{
"myindex":{
"mappings":{
"snapshot":{
"_all":{
"enabled":false
},
"properties":{
"AltWeightedAvgBidPx":{
"type":"long"
},
"AltWeightedAvgOfferPx":{
"type":"long"
}
}
}
}
}
————————————————
版权声明:本文为CSDN博主「后打开撒打发了」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenxun2009/java/article/details/78602795
网友评论