SkyWalking 性能优化

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: SkyWalking 性能优化

如果你正在使用SkyWalking作为分布式跟踪系统,而且是使用elasticsearch作为存储引擎,那么这篇文章中针对SkyWalking的优化你不妨看一下,说不定就有用了呢?


OAP优化


skywalking写入ES的操作是使用了ES的批量写入接口,我们要做的是调整相关参数尽量降低ES索引的写入频率。参数调整主要是针对skywalking的配置文件application.yml,相关参数如下:

storage:
  elasticsearch:
    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:4000} # Execute the bulk every 2000 requests
    bulkSize: ${SW_STORAGE_ES_BULK_SIZE:40} # flush the bulk every 20mb
    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:30} # flush the bulk every 10 seconds whatever the number of requests
    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:4} # the number of concurrent requests
    metadataQueryMaxSize: ${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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
缓存 前端开发 JavaScript
前端常见的性能优化方案?
【7月更文挑战第14天】前端性能优化包括代码压缩、资源合并、图片优化、缓存策略和DOM操作改进。例如,压缩CSS、JS,懒加载图片,使用CDN,事件委托,启用HTTP/2,及利用性能工具进行评估和优化。目标是加快加载速度,提升用户体验和服务器效率。
82 2
|
8月前
|
缓存 监控 NoSQL
中间件应用性能优化
【5月更文挑战第2天】中间件应用性能优化
145 2
中间件应用性能优化
|
存储 缓存 NoSQL
性能优化方案及思考
周末闲暇在家,朋友让我帮忙优化一个接口,这个接口之前每次加载都需要40s左右,经过优化将性能提了10倍左右;又加了缓存直接接口响应目前为300ms左右,于是将自己的优化思路整理总结一下
|
存储 监控
SkyWalking 拓扑功能的性能优化
1. 增加查询的并行度,减少串行耗时。 2. 规避无效查询的触发,避免带来额外消耗。 3. 提升分片检索的命中,缩小检索分片数
394 0
|
Web App开发 JavaScript 前端开发
当我们进行性能优化,我们在优化什么(LightHouse优化实操)
好的互联网产品不仅仅在功能上要高人一筹,在性能层面也需要出类拔萃,否则金玉其外败絮其中,页面是美轮美奂了,结果首屏半天加载不出来,难免让用户乘兴而来,败兴而归。 幸运的是,前端的性能优化有诸多有迹可循的理论和方法,其中相对权威的,无疑是LightHouse。
当我们进行性能优化,我们在优化什么(LightHouse优化实操)
|
Android开发 芯片 UED
初识性能优化
性能优化一词相信大家都经常听到,今天我们就简单的来认识以下性能优化,了解做性能优化的必要性以及优化的分类。
初识性能优化
|
存储 缓存 Prometheus
ELK 性能优化实战
ELK 性能优化实战
|
监控 大数据 开发工具
干货|车来了APM应用性能体验实践
车来了通过使用友盟+应用性能监控平台U-APM,实现了实时、可靠、全面地捕获应用崩溃、ANR、自定义异常、卡顿、启动分析等问题,全面提升用户体验。并轻松解决了传统应用稳定性监控服务普遍存在的难题
干货|车来了APM应用性能体验实践
|
存储 Java 索引
SkyWalking 性能优化
如果你正在使用SkyWalking作为分布式跟踪系统,而且是使用elasticsearch作为存储引擎,那么这篇文章中针对SkyWalking的优化你可以关注一下。
890 0
|
Web App开发 Dart JavaScript
Flutter 性能优化的利器 —— Tracing
对于任何技术栈,都会有一个绕不过去的坎,那就是性能优化,而对于如何进行性能优化,最重要的前提就是需要知道具体的耗时分布,要知道耗时分布,就得打点(时间戳),一般的性能打点都是一些散点,比较凌乱,而本文要讲的 Tracing 则是性能打点的一种非常优雅的实现,它以瀑布流的形式呈现,非常直观,还有一个更直观的名字叫 火焰图 Tracing 顾名思义 —— 追踪每段耗时分布。
4434 0
Flutter 性能优化的利器 —— Tracing