SkyWalking 性能优化

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 如果你正在使用SkyWalking作为分布式跟踪系统,而且是使用elasticsearch作为存储引擎,那么这篇文章中针对SkyWalking的优化你可以关注一下。

OAP优化

skywalking写入ES的操作是使用了ES的批量写入接口,我们要做的是调整相关参数尽量降低ES索引的写入频率。


参数调整主要是针对skywalking的配置文件application.yml,相关参数如下:


storage:
elasticsearch:
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:4000} #Executethebulkevery2000requestsbulkSize: ${SW_STORAGE_ES_BULK_SIZE:40} #flushthebulkevery20mbflushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:30} #flushthebulkevery10secondswhateverthenumberofrequestsconcurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:4} #thenumberofconcurrentrequestsmetadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:8000}


  • 调整bulkActions默认2000次请求批量写入一次改到4000次;


  • bulkSize批量刷新从20M一次到40M一次;


  • flushInterval每10秒刷新一次堆改为每30秒刷新;


  • concurrentRequests查询的最大数量由5000改为8000。


参考网址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html


ES优化

JVM参数调整


此部分主要是针对es的配置文件jvm.options


  • 配置修改


    根据服务器配置调整JVM参数,需要设置-Xmn参数指定新生代的大小,-Xmn的值可以设置成-Xmx的3/8左右:


-Xms6g-Xmx6g-Xmn2g


  • 解释说明


    这里说明一下为什么要显式指定-Xmn的大小。在刚开始我也没设置-Xmn参数,但是通过观察gc日志发现ES一直在频繁进行Young GC,达到1秒一次。而且新生代大小小于理论配置大小。


gc日志:


[2019-12-23T03:24:11.002+0000][1][gc,heap      ] GC(269053) ParNew: 419674K->11981K(460096K)
[2019-12-23T03:24:11.002+0000][1][gc,heap      ] GC(269053) CMS: 1646907K->1646907K(2634560K)
[2019-12-23T03:24:11.002+0000][1][gc,metaspace ] GC(269053) Metaspace: 86889K->86889K(1130496K)


当时设置的-Xmx 和 -Xms为3g,如果按照默认配置-XX:NewRatis=2那么新生代应该有1g左右,但是实际上只有460M,为了减少Young gc的频率需要显式使用-Xmn指定新生代大小。


大家可以参考博文 CMS GC 默认新生代是多大?,很好的解释了为什么CMS垃圾回收时默认新生代的大小不是根据-XX:NewRatis=2计算而得。


索引参数优化


给ES配置高性能写模式主要是修改es配置文件elasticsearch.yml中的index相关配置,主要修改如下几个参数


"index.merge.scheduler.max_thread_count" : "1",
"index.refresh_interval" : "30s",
"index.translog.durability" : "async",
"index.translog.sync_interval" : "120s"


参考网址:https://www.elastic.co/guide/en/elasticsearch/reference/6.8/tune-for-indexing-speed.html


结语


本篇主要是针对skywalking单机版优化,由于skywalking对es的操作非常多,如果单机版es扛不住的话还是最好还是使用skywalking的集群模式。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
缓存 监控 NoSQL
中间件应用性能优化
【5月更文挑战第2天】中间件应用性能优化
27 2
中间件应用性能优化
|
11月前
|
存储 缓存 NoSQL
性能优化方案及思考
周末闲暇在家,朋友让我帮忙优化一个接口,这个接口之前每次加载都需要40s左右,经过优化将性能提了10倍左右;又加了缓存直接接口响应目前为300ms左右,于是将自己的优化思路整理总结一下
|
存储 Java 索引
SkyWalking 性能优化
SkyWalking 性能优化
341 0
|
Web App开发 SQL 缓存
性能优化
性能优化 前言 以前写过一篇性能优化的笔记前端性能优化小结,那时候算是列了一些优化的点,最近又读了几篇性能优化相关的文章,加上自己动手做了一些实践,相比之前有了更深一点的理解
|
存储 监控
SkyWalking 拓扑功能的性能优化
1. 增加查询的并行度,减少串行耗时。 2. 规避无效查询的触发,避免带来额外消耗。 3. 提升分片检索的命中,缩小检索分片数
307 0
|
Android开发 芯片 UED
初识性能优化
性能优化一词相信大家都经常听到,今天我们就简单的来认识以下性能优化,了解做性能优化的必要性以及优化的分类。
初识性能优化
|
并行计算 程序员 Linux
C++服务性能优化的道与术-道篇:阿姆达尔定律
在之前的文章 《2004:当CPU温和地走入那个良夜》 中我讲到了2000年后摩尔定律的终结,CPU时钟频率定格,多核成为CPU发展的新方向,并行计算成为趋势。
201 0
C++服务性能优化的道与术-道篇:阿姆达尔定律
|
机器学习/深度学习 缓存 JavaScript
|
存储 缓存 Prometheus
ELK 性能优化实战
ELK 性能优化实战
|
Web App开发 Dart JavaScript
Flutter 性能优化的利器 —— Tracing
对于任何技术栈,都会有一个绕不过去的坎,那就是性能优化,而对于如何进行性能优化,最重要的前提就是需要知道具体的耗时分布,要知道耗时分布,就得打点(时间戳),一般的性能打点都是一些散点,比较凌乱,而本文要讲的 Tracing 则是性能打点的一种非常优雅的实现,它以瀑布流的形式呈现,非常直观,还有一个更直观的名字叫 火焰图 Tracing 顾名思义 —— 追踪每段耗时分布。
4367 0
Flutter 性能优化的利器 —— Tracing

热门文章

最新文章