ElasticSearch调优问题
1. 近期遇到一个ES内存居高不下的问题,查了查,发现ES有个fielddata,当你发起一个查询,分析字符串的聚合将会被加载到 fielddata,如果这些字符串之前没有被加载过。如果结果中 fielddata 大小超过了指定 大小
,其他的值将会被回收从而获得空间。默认情况下,设置都是 unbounded ,Elasticsearch 永远都不会从 fielddata 中回收数据。设想我们正在对日志进行索引,每天使用一个新的索引。通常我们只对过去一两天的数据感兴趣,尽管我们会保留老的索引,但我们很少需要查询它们。不过如果采用默认设置,旧索引的 fielddata 永远不会从缓存中回收! fieldata 会保持增长直到 fielddata 发生断熔,这样我们就无法载入更多的 fielddata。这个时候,我们被困在了死胡同。但我们仍然可以访问旧索引中的 fielddata,也无法加载任何新的值。相反,我们应该回收旧的数据,并为新值获得更多空间。设置indices.fielddata.cache.size参数就是一个比较好的解决方案。另外设置bootstrap.mlockall: true可以允许 JVM 锁住内存,禁止操作系统交换出去,从而提高性能。
监控节点:GET _nodes/stats
监控集群:GET _cluster/stats
参考文档:
1. https://www.elastic.co/guide/cn/elasticsearch/guide/current/_limiting_memory_usage.html 限制ES内存使用
2. https://www.elastic.co/guide/cn/elasticsearch/guide/current/heap-sizing.html 堆内存设置
3. https://www.elastic.co/guide/cn/elasticsearch/guide/current/_monitoring_individual_nodes.html 监控信息
最新文章
- CentOS7中安装Python3.5
- 使用PHPExcel导入Excel到MySql
- zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients
- hdu 2897(威佐夫博奕变形)
- 7个热门开源PHP框架
- kafka初探
- 使用JavaMail发送和接收电子邮件
- TCP通信中的大文件传送
- nodejs,http,get,post,请求
- centos网络配置方法(手动设置,自动获取)
- JavaScript中call和apply方法的使用
- 【MySql】delete用法
- 利用unittest+ddt进行接口测试(二):使用yaml文件管理测试数据
- 服务发现:Zookeeper vs etcd vs Consul 参考自http://dockone.io/article/667
- “全栈2019”Java多线程第二十八章:公平锁与非公平锁详解
- 关于Unity中网格导航与寻路
- Python闭包装饰器笔记
- 关于GDI+的一些使用基础设置
- Spark+IDEA单机版环境搭建+IDEA快捷键
- JavaScript In OA Framework