ElasticSearch调优

ElasticSearch调优,第1张

ElasticSearch调优

1.Linux参数调优:
    1.禁用系统swap,编辑/etc/fstab文件并注释掉swap
    2.修改系统资源限制
    #单用户可以打开的最大文件数量,可以设置为官方推荐的65536或更大些
    echo "* - nofile 655360">>/etc/security/limits.conf
    #单用户内存地址空间
    echo "* - as unlimited" >>/etc/security/limits.conf
    #单用户线程数
    echo "* - nproc 2056474" >>/etc/security/limits.conf
    #单用户文件大小
    echo "* - fsize unlimited" >>/etc/security/limits.conf
    #单用户锁定内存
    echo "* - memlock unlimited" >>/etc/security/limits.conf
    #单进程可以使用的最大map内存区域数量
    echo "vm.max_map_count = 655300" >>/etc/sysctl.conf

2.conf/elasticsearch.yml文件:
    适当增大写入buffer和bulk队列长度,提高写入性能和稳定性
    indices.memory.index_buffer_size: 15%
    thread_pool.bulk.queue_size:1024

    防止新建shard时扫描所有shard的元数据,提升shard分配速度
    cluster.routing.allocation.disk.include_relocations: false

    设置内存熔断参数,防止写入或查询压力过高导致OOM,具体数值可根据使用场景调整。
    indices.breaker.total.limit: 30%
    indices.breaker.request.limit: 6%
    indices.breaker.fielddata.limit: 3%
    调小查询使用的cache,避免cache占用过多的jvm内存,具体数值可根据使用场景调整。
    indices.queries.cache.count: 500
    indices.queries.cache.size: 5%

    单机多节点时,主从shard分配以ip为依据,分配到不同的机器上,避免单机挂掉导致数据丢失。
    cluster.routing.allocation.awareness.attributes: ip

    核心数:processors配置参数的值决定了节点allocated_processors的参数值,而ES很多线程池的大小都是基于allocated_processors的值来计算的
    node.processors: 48(在以下情况可以考虑调整该参数:在一台服务器部署多个ES实例,此时调整参数为处理器实际核心数一半;)

3.ES节点配置
    jvm.options
    -Xms和-Xmx设置为相同的值,推荐设置为机器内存的一半左右,剩余一半留给系统cache使用。
     当机器内存大于64G时,遵循以下原则:
    a. 如果主要的使用场景是全文检索, 那么建议给ES Heap分配 4~32G的内存即可;其它内存留给 *** 作系统, 供lucene使用(segments cache), 以提供更快的查询性能。
    b. 如果主要的使用场景是聚合或排序, 并且大多数是numerics, dates, geo_points 以及not_analyzed的字符类型, 建议分配给ES Heap分配 4~32G的内存即可,其它内存留给 *** 作系统,供lucene使用(doc values cache),提供快速的基于文档的聚类、排序性能。
    c. 如果使用场景是聚合或排序,并且都是基于analyzed 字符数据,这时需要更多的 heap size, 建议机器上运行多ES实例,每个实例保持不超过50%的ES heap设置(但不超过32G,堆内存设置32G以下时,JVM使用对象指标压缩技巧节省空间),50%以上留给lucene。

4.索引mapping和代码层优化(索引由开发通过应用配置创建,相关优化项在应用配置文件中已配置):
    1.预热文件系统cache
    "index.store.preload": ["nvd", "dvd"]
    2.非查询字段不建立索引只做存储
    3.索引字段类型选择优化
    4.查询优化
    

查看所有索引:
curl -XGET -u "simcard:simcard123$%^" '10.2.37.30:9200/_cat/indices'

查看指定索引数据总量:

curl -XGET -u "simcard:simcard123$%^" '10.2.37.30:9200/indexName/_count'

查看es版本信息:
curl -XGET -u "simcard:simcard123$%^"  -H "Content-Type: application/json" '10.2.24.50:9200'
删除索引:
curl -XDELETE -u "simcard:simcard123$%^" http://10.2.24.50:9200/simcard_test
创建索引:
curl -XPUT -u "simcard:simcard123$%^"  -H "Content-Type: application/json" '10.2.24.50:9200/simcard_test' -d '
{
"settings":{
"number_of_shards":"5",
"number_of_replicas":"1",
"store":{"preload": "[nvd, dvd]"}
},
"mappings": {
"dynamic": "false",
"properties": {
"cardCreateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"cardVersion": {
"type": "keyword"
},
"emptySN": {
"type": "keyword"
},
"iccid": {
"type": "keyword"
},
"id": {
"type": "keyword"
},
"seid": {
"type": "keyword"
},
"supplierCode": {
"type": "keyword"
},
"updateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
}'

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5683743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存