`

ElasticSearch 性能优化

阅读更多

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性能优化策略

    ElasticSearch性能优化策略

    es性能优化.docx

    介绍了ES性能优化相关配置

    King性能优化指南.pdf

    KingbaseES R3 性能优化

    elasticsearch分布式优化配置大全

    本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍

    阿里云Elasticsearch架构解析与性能优化实践20190420.zip

    阿里云监控报警与Elasticsearch整合, Elasticsearch查询性能测试,Elasticsearch内核优化,大集群需要解决的问题,Elasticsearch自动化运维核心架构, 阿里云Elasticsearch实时计算平台Eflow,Elasticsearch写入性能测试...

    elasticsearch分布式优化配置总结

    本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你

    Elasticsearch入门+性能优化+环境配置+框架集成+集群进阶+ 最新Elasticsearch实战教程

    ├─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进阶(一)写入性能基准测试写入性能优化

    进入正题之前,解决之前的一个疑问:Elasticsearch集群是否已经正确工作?截图时,只上传过一次小测试数据(143万条),设置为:从图中可以看出,ip10节点上设置的数据目录:data1和data2目录工作正常,但是数据相同...

    Elasticsearch的性能优化

    Elasticsearch(后文简称ES)的基础是Lucene,所有的索引和文档数据是存储在本地的磁盘中,具体的路径可在 ES的配置文件../config/elasticsearch.yml中配置,如下:磁盘涉及到IO的读写速度问题,因此如果条件允许的...

    02-微盟技术沙龙-ES在商品中台的落地 12.21 2023 online

    Elasticsearch 在业务上,主要用于一些业务检索场景(商品检索、订单检索等),构建在 ES 搜索引擎之上。在微盟体系中,商品中台 ES 承载了日均亿级别的查询和高频写入。经历过线上的一些性能挑战之后,逐步的沉淀了...

    01-微盟 Elasticsearch 运维实践

    1、Elasticsearch 使用建议:介绍在使用 Elasticsearch 进行数据搜索和分析时,应该遵循的一些规范和建议,包括 ES 架构的选择、索引结构的设计、查询语句的优化、写入优化等等,以提高 Elasticsearch 的性能、可靠...

    Elasticsearch Painless Script入门教程--示例数据-sat.json

    自Elasticsearch 5.x 引入Painless,使得Elasticsearch拥有了安全、可靠、高性能脚本的解决方案。Painless是Elastic开发并做了专门的优化,相较之前的脚本更快、安全、易使用、可靠。 Painless脚本的目标是使编写...

    ElasticSearch5.2全网最全技术视频

    (1)最全面的Elasticsearch运维、管理、调优、故障处理的知识体系:企业级监控体系的搭建,企业级集群部署,集群日常管理策略,集群版本升级方案,集群基准压测方案,集群数据的备份和恢复,系统核心配置参数,性能...

    ElasticSearch Server Second Edition pdf

    最新版本的ElasticSearch Server Second Edition 云搜索技术相关的书 本书系统讲述如何运用ElasticSearch Server搭建分布式搜索平台,如何进行分片,如何建立索引,如何索引数据,如何进行性能优化等。

    Elasticsearch的进阶之路

    课程介绍:本课程是基于Elasticsearch7.x版开设的课程,演示环境为Ubuntu16.04,读者具有Linux知识更好,如果没有Linux知识也没有太大关系,Elasticsearch是基于Java开发的,Windows上...10、Elasticsearch性能优化及

    ES集群性能优化及维护B

    ES集群性能优化及维护B 注:集群 elasticsearch 版本为 v7.2.1。 1.ES系统日志删除策略: 方式一:修改日志配置文件(config/log4j2.properties) appender.rolling.strategy.action.condition.nested_condition.type...

    ElasticSearch集群搭建以及基本的操.docx

    ElasticSearch集群搭建以及基本的操作 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库

Global site tag (gtag.js) - Google Analytics