es 主要内存使用大户
一、Segment Memory
词典的前缀索引(Term Index),具体概念参考相关文档。
别小看只是前缀的索引,如果索引库多,数据量大,每个节点达到10G不稀奇,node没节点heap内存才设置了32G啊。 :joy:
查看方法
_cat/segments
_cat/segments?v&h=index,shard,segment,size,size.memory
_cat/nodes?v&h=ip,port,sm,heap.*解决方法
删除不用的索引。
关闭索引 (文件仍然存在于磁盘,只是释放掉内存)。需要的时候可以重新打开。
定期对不再更新的索引做optimize (ES2.0以后更改为force merge api)。这Optimze的实质是对segment file强制做合并,可以节省大量的segment memory。
二、Filter Cache
查询缓存,查询次数多了,改缓存消耗的内存也是大数字了,可以通过query-max等参数限制。
- 查看方法:
_nodes/d28-84/stats/indices/query_cache
- 解决方法:
$ curl -XPOST ‘http://localhost:9200/clientlog-201607,clientlog-201606/_cache/clear’
/kimchy,elasticsearch/_cache/clear?request_cache=true
三、Field Data cache
indices.breaker.fielddata.limit indices.fielddata.cache.size 等参数可以限制
1.解决方法:
启用Doc Values,禁用_all
2.查看方法:
/_stats/fielddata/
# Indices Stat
curl -XGET 'http://localhost:9200/_stats/fielddata/?fields=field1,field2&pretty'# You can use wildcards for field names
curl -XGET 'http://localhost:9200/_stats/fielddata/?fields=field*&pretty'
es 2.x后,默认都是docvalue,改问题越来越好解决了,不然lucene的field data cache也是很惊人的大,偶是很少用field data cache的。
四、Bulk Queue
批量写入数据bulk的时候队列中保存的数据占用的内存。
别小看这里的数据量,如果队列1000个。每个bulk 4092行,每行10k这样占用的内存也超级惊人啊。
1、查看方法
/_cat/thread_pool?v&h=host,bulk.*
threadpool:
bulk:
type: fixed
size: 60
queue_size: 1000
2、解决方法:
设置队列小一点,forcemerge写入数据。
本工程的队列值可以控制写入数据,减少队列数据。
五、Indexing Buffer
Indexing Buffer是用来缓存新数据,当其满了或者refresh/flush interval到了,就会以segment file的形式写入到磁盘。
indices.memory.index_buffer_size
Accepts either a percentage or a byte size value. It defaults to 10%, meaning that 10% of the total heap allocated to a node will be used as the indexing buffer size.
indices.memory.min_index_buffer_size
If the index_buffer_size is specified as a percentage, then this setting can be used to specify an absolute minimum. Defaults to 48mb.
indices.memory.max_index_buffer_size
If the index_buffer_size is specified as a percentage, then this setting can be used to specify an absolute maximum. Defaults to unbounded.
indices.memory.min_shard_index_buffer_size
Sets a hard lower limit for the memory allocated per shard for its own indexing buffer. Defaults to 4mb
六、超大搜索聚合结果集的fetch
1、常用或者必用查询字段作route,数据在不同node分布均匀;
2、对超时间查询请求作分析,增加wrapper作屏蔽, 判断slow log显示的查询;
3、预处理数据,高并发常用查询使用预处理索引库(最佳方式);
4、将实时ad-hoc请求适用spark+es合并执行方式处理(es-hadoop spark)。
es 主要内存使用大户相关推荐
- ES Segment Memory——本质上就是segment中加到内存的FST数据,因此segment越多,该内存越大...
ElasticSearch优化系列四:ES的heap是如何被瓜分掉的 转自:https://www.jianshu.com/p/f41b706db6c7 以下分别解读几个我知道的内存消耗大户: Seg ...
- 亿流量大考(4):自研ES+HBase+纯内存的高性能毫秒级查询引擎
V-xin:ruyuanhadeng获得600+页原创精品文章汇总PDF 一.前情回顾 上篇文章(<亿流量大考(3):不加机器,如何抗住每天百亿级高并发流量?>)聊了一下系统架构中,百亿流 ...
- ES为什么限制内存小于32G,为什么小于系统内容的50%
ES为什么内存最好小于32G ES是用java开发的 java32位虚拟机的寻址最大4G,64位理论上来说无限大,请参考java Object的header结构. 但是实际上64位的地址指针会导致一下 ...
- Elasticsearch内存分配设置详解
Elasticsearch默认安装后设置的内存是1GB,对于任何一个现实业务来说,这个设置都太小了.如果你正在使用这个默认堆内存配置,你的集群配置可能会很快发生问题. 这里有两种方式修改Elast ...
- ElasticSearch优化系列二:机器设置(内存)
点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 预留一半内存给Lucence使用 一个常见的问题是配置堆太大.你有一个64 GB的机器,觉得JVM内存越 ...
- 看完这篇,让你不再惧怕内存优化
对于安卓应用开发来说,内存究竟会遇到什么样的问题,有什么方法可以用来测试和分析,以及有什么样的策略可以去实践优化,今天就来好好聊聊这个话题. 缘起 现代计算机是基于冯*诺依曼架构的,计算机的软件是 ...
- 内存优化: 纹理压缩技术
相比普通格式图片,纹理压缩可以节省大量显存和 CPU 解码时间,且对 GPU 友好. 背景 游戏开发中纹理是内存占用大户,移动设备因为内存有限,问题更加明显.据统计,淘宝互动小程序性能卡口 70% 以 ...
- Elasticsearch 合理内存分配
Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了.如果你正在使用这些默认堆内存配置,你的集群配置可能有点问题. 这里有两种方式修改Elasticsearc ...
- Elasticsearch堆内存为什么建议设置为31G(小于32G)?
Elasticsearch 默认安装后设置的堆内存是 1 GB.对于任何一个业务部署来说, 这个设置都太小了.如果你正在使用这些默认堆内存配置,您的集群可能会出现问题. 这里有两种方式修改 Elast ...
最新文章
- log4j中调试与错误日志分开_idea中log4j日志插件报错
- ustc小道消息20211223
- fragment嵌套,viewpager嵌套 不能正确显示
- JAVA分布式篇1——Linux
- Linux之export命令
- java对接金蝶接口
- maven命令打jar包
- 51单片机制作简易计算器(动态数码管、矩阵按键)
- 遥感影像反差增强、直方图均衡化
- 如何根据vin码查询_车架号查询-VIN查询-车辆识别码查询-宜配网
- 新元宇宙每周连载《地球人奇游天球记》第十三回火星烧烤
- 小白都能看懂的go语言包管理工具DEP详解
- 精品慕课资源推荐 计算机网络
- linux安装ie浏览器吗,Ubuntu 上安装IE浏览器的方法
- 芯片ECO的种类和修复方法介绍
- Canvas+html+css+position定位
- 关于到年底日常生活的工作计划
- Zend引擎探索 之 PHP中前置递增不返回左值
- 世界首富比尔·盖茨面湖而建的6000万美元豪宅被誉为美国除白宫外最受瞩目的名人官邸
- GitHub 新手详细教程