GeTrace系统的所有搜索都是用ElasticSearch来做的,在使用ElasticSearch的过程中碰到了一些问题,这里记录一下。
一 . 在查找调用链的时候。整体数据量大(每天60G * 7 = 420G),但是结果集比较少(只有几百行)的时候,查询时间经常会超过1分钟,慢的甚至需要5,6分钟.
优化1:经过深入测试发现,是因为batchSize设置过大(一开始设置为Integer.Max),具体原因还未分析过
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(indices).setTypes(type) .setQuery(builderQueryBuilder(matches)).setSearchType(searchType).setScroll(new TimeValue(500000)).setSize(batchSize);
优化2:业务上做优化,原先查找调用链的时候是查找所有日志的,现在设置为默认查找当天日志,如果当天日志查不到,再查找所有日志。这样查找当天的调用链的时候都是非常快的
优化后大部分查询都在30秒以内
二. 在查询应用的接口调用分析数据时,如果搜索的时间跨度很长,并且数据是一次性读入到内存,这样就可能会出现内存不够的情况
优化1: 为了解决这个问题,采用了分批查询接口,每次查询500条数据,因为业务上需要对日志做排序,在查询的时候需要在查询接口上添加排序参数
三. 随着调用链日志量的增多,经常会出现Redis日志堆积的情况。调用链日志写入EL的速度在2000-3000行每秒。 经过分析,堆积的原因可能在两方面,一是EL集群本身性能需要优化,二是logstash写入EL时可能发生了阻塞。
优化1:修改了EL的配置,让EL刷新日志的时间变为30分钟
优化2:通过日志分析logstash经常会出现Full GC,因为日志在流过logstash的时候,会创建很多临时对象,如果年轻代过小的话,会导致年轻代很快就被塞满,从发生Yong GC,多次Yong GC之后,本来是很快就会被释放的临时变量也会被迁移到年老代。导致年老代频繁被塞满,从而经常发生Full GC。解决的办法是调大年轻代的比例,让临时变量在年轻代尽量多保留一段时间,这样当Yong GC的时候就可以释放掉很多临时变量。
相关推荐
ElasticSearch性能优化策略
介绍了ES性能优化相关配置
KingbaseES R3 性能优化
本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍
阿里云监控报警与Elasticsearch整合, Elasticsearch查询性能测试,Elasticsearch内核优化,大集群需要解决的问题,Elasticsearch自动化运维核心架构, 阿里云Elasticsearch实时计算平台Eflow,Elasticsearch写入性能测试...
本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你
├─elasticsearch-7.8.0-linux-x86_64.tar.gz ├─elasticsearch-7.8.0-windows-x86_64.zip ├─elasticsearch-analysis-ik-7.8.0.zip ├─elasticsearch-head-chrome-plugin.rar ├─kibana-7.8.0-windows-x86_64....
进入正题之前,解决之前的一个疑问:Elasticsearch集群是否已经正确工作?截图时,只上传过一次小测试数据(143万条),设置为:从图中可以看出,ip10节点上设置的数据目录:data1和data2目录工作正常,但是数据相同...
Elasticsearch(后文简称ES)的基础是Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES的配置文件../config/elasticsearch.yml中配置,如下:磁盘涉及到IO的读写速度问题,因此如果条件允许的...
Elasticsearch 在业务上,主要用于一些业务检索场景(商品检索、订单检索等),构建在 ES 搜索引擎之上。在微盟体系中,商品中台 ES 承载了日均亿级别的查询和高频写入。经历过线上的一些性能挑战之后,逐步的沉淀了...
1、Elasticsearch 使用建议:介绍在使用 Elasticsearch 进行数据搜索和分析时,应该遵循的一些规范和建议,包括 ES 架构的选择、索引结构的设计、查询语句的优化、写入优化等等,以提高 Elasticsearch 的性能、可靠...
自Elasticsearch 5.x 引入Painless,使得Elasticsearch拥有了安全、可靠、高性能脚本的解决方案。Painless是Elastic开发并做了专门的优化,相较之前的脚本更快、安全、易使用、可靠。 Painless脚本的目标是使编写...
(1)最全面的Elasticsearch运维、管理、调优、故障处理的知识体系:企业级监控体系的搭建,企业级集群部署,集群日常管理策略,集群版本升级方案,集群基准压测方案,集群数据的备份和恢复,系统核心配置参数,性能...
最新版本的ElasticSearch Server Second Edition 云搜索技术相关的书 本书系统讲述如何运用ElasticSearch Server搭建分布式搜索平台,如何进行分片,如何建立索引,如何索引数据,如何进行性能优化等。
课程介绍:本课程是基于Elasticsearch7.x版开设的课程,演示环境为Ubuntu16.04,读者具有Linux知识更好,如果没有Linux知识也没有太大关系,Elasticsearch是基于Java开发的,Windows上...10、Elasticsearch性能优化及
ES集群性能优化及维护B 注:集群 elasticsearch 版本为 v7.2.1。 1.ES系统日志删除策略: 方式一:修改日志配置文件(config/log4j2.properties) appender.rolling.strategy.action.condition.nested_condition.type...
ElasticSearch集群搭建以及基本的操作 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库