文档章节

Elasticsearch、Logstash和Kibana配合使用时的调优

princeicelk
 princeicelk
发布于 2016/07/20 15:19
字数 909
阅读 475
收藏 11

我们在使用Kibana构建了一个20+ visulization的dashboard后,终于出现了性能了,问题可能表现为:

  • Elasticsearch后台报Java Heap Limit爆了
  • Elasticsearch后台报out of memory
  • 15分钟时长(每秒1,000条左右)的日志在kibana dashboard要load好几分钟
  • 更多的数据会报shard无法获取

在通读了ElasticSearch官方指南中关于性能和调优的页面以后,用中文总结一下ES开发人员关于调优的基本指引:

曾经有很多人以为调个参数就能让性能快个10倍100倍,他们以为我们傻吗?所有能调的我们都给你们调好,别乱动,我们见过数以百计的项目因为乱动参数被钉在了历史的耻辱柱上!性能不够就加机器!

即使这样,还是有极个别的东西我们可以根据部署和ELK的特点微调一下(因为没钱开那多instance)。

Heap Memory

  • 不要使用8G内存以下的实例,实在没法用。16G, 32G, 64G都可以。
  • 将Heap设置为内存的一半,剩下的lucene要用的
  • 不要超过32G

Field data vs docValue

Field data中文名字叫正排索引,也就是以文档为key。原因是主索引不能很好的完成aggregayion和filering这种操作。要注意,fieldData一旦load,会把整个index中的文档都load入Heap,以便于等会要用。 DocValues同样是正排索引,不同的是,DocValues是在索引时构建并存在硬盘的,而不是像field data一样在search时load进内存。可想而知,DocVaule使用性能兑换了对资源的需求。但事实上,根据我找到的一份资料,Docvalue在查询时的性能仅比field data慢20%,而对内存几乎没有需求了。

  • 尽量使用docValues
  • 将logstash升级到2.0以上并重新构建logstash-*的mapping,logstash会自动将所有raw字段设为 docValues = true

Field data的内存占用

默认条件下,fieldData是不受限的,它虽然放置在内存中,但本质上不是一个transient的缓存,ES也不会丢弃任何内存中的fieldData。在aggregation特别多的时候,这种设定会导致新的fieddata因为内存满了而搜索不到。

有以下几个参数和field data的内存使用有关:

  • a. indices.breaker.fielddata.limit fieldData使用保险;默认60%;

  • b. indices.breaker.request.limit 其他操作(创建buckets什么的)保险;默认40%; 尽量a+b=100%

  • c. indices.breaker.total.limit 总阀;默认80%,应略低于100%;

  • d. indices.fielddata.cache.size 内存回收的触发线,应低于a;

  • 使用Elatico的Marvel观测field data在内存中的使用状况,marvel现在是免费的。

index时的性能

Logstash的elaticsearch插件是有默认的批量flush的,默认应该是每500条日志或每1秒,可以适当调整,但默认设置应该不会给ES太大压力。 如果发现日志不能及时进入ES,更有可能的性能问题出在logstash上。Logstash,尤其当期有grok这样的filter时,是可以非常占CPU的。我们的结果是,1秒1000条日志,1个grokfilter,这样的logstash就基本要占用AWS instance的一个核。

  • 请意识到解析和索引日志是非常占资源的,请分配足够的资源给logstash。

© 著作权归作者所有

共有 人打赏支持
princeicelk
粉丝 16
博文 21
码字总数 17123
作品 0
静安
CTO(技术副总裁)
私信 提问
CTO详细讲解海量日志处理ELK

ELK实时日志分析平台之Elasticsearch简介 Elasticsearch是一个高度灵活的开源全文检索和分析引擎。它能够迅速(几乎是实时地)地存储、查找和分析大规模数据。通常被用在有复杂的搜索要求的系...

Java架构分享
2018/05/23
0
0
【Elasticsearch全文搜索引擎实战】之Filebeat快速入门

0. 背景 用过ELK(Elasticsearch, Logstash, Kibana)的人应该都面临过同样的问题,Logstash虽然功能强大:支持许多的input/output plugin、强大的filter功能。但是确内存占用会非常大。还有...

mantoudev
2018/01/21
0
0
ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台

什么要做日志分析平台? 随着业务量的增长,每天业务服务器将会产生上亿条的日志,单个日志文件达几个GB,这时我们发现用Linux自带工具,cat grep awk 分析越来越力不从心了,而且除了服务器...

qw87112
2018/06/28
0
0
CentOS下使用ELK套件搭建日志分析和监控平台

1 概述 ELK套件(ELK stack)是指ElasticSearch、Logstash和Kibana三件套。这三个软件可以组成一套日志分析和监控工具。 由于三个软件各自的版本号太多,建议采用ElasticSearch官网推荐的搭配...

周宇1991
2018/06/29
0
0
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Python中判断字符串是否包含中文

Python import reRE = re.compile(u'[\u4e00-\u9fa5]', re.UNICODE)match = re.search(RE, str)if match is None:# 没有包含中文字符 参考 Python regular expressions return true/f......

亚林瓜子
3分钟前
0
0
《CNCF × Alibaba 云原生技术公开课》正式首播

《CNCF × Alibaba 云原生技术公开课》立即观看:点击立即观看 云原生最初来描述云上应用的典型架构与特性,随着容器、Kubernetes、Serverless、FaaS技术的演进,CNCF(云原生计算基金会)把...

mcy0425
4分钟前
0
0
网站漏洞如何修复网站程序问题

jeecms 最近被爆出高危网站漏洞,可以导致网站被上传webshell木马文件,受影响的版本是jeecms V6.0版本到jeecmsV7.0版本。该网站系统采用的是JAVA语言开发,数据库使用的是oracle,mysql,sql数...

网站安全
7分钟前
0
0
git 中“warning: CRLF will be replaced by LF in”解决方案

https://stackoverflow.com/questions/5834014/lf-will-be-replaced-by-crlf-in-git-what-is-that-and-is-it-important...

qwfys
11分钟前
0
0
Spring Boot配置ssl证书启用HTTPS协议

一 、点睛 SSL是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。SSL协议位于TCP/IP协议和各种应用层协议之间,为数据通信提供安全支持。 SSL协议分为两...

故久呵呵
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部