SkyWalking 性能优化

Stella981
• 阅读 802

SkyWalking 性能优化

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

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的集群模式。

SkyWalking 性能优化

热文推荐

☞构建三维一体立体化监控体系 ,看这篇就够了!

数据库优化-SQL优化

Docker基础与实战,这一篇文章就够了!

Docker-Compose基础与实战,这一篇文章就够了!

SkyWalking 性能优化

戳我留言

点击下方“阅读原文”查看更多

SkyWalking 性能优化

本文分享自微信公众号 - JAVA日知录(javadaily)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
4个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。languageJavaScript"name":"vuecliversion2","version":"1.0.0","desc
浅梦一笑 浅梦一笑
4个月前
初学 Python 需要安装哪些软件?超级实用,小白必看!
编程这个东西是真的奇妙。对于懂得的人来说,会觉得这个工具是多么的好用、有趣,而对于小白来说,就如同大山一样。其实这个都可以理解,大家都是这样过来的。那么接下来就说一下python相关的东西吧,并说一下我对编程的理解。本人也是小白一名,如有不对的地方,还请各位大神指出01名词解释:如果在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
4个月前
css问题
1、在IOS中图片不显示(给图片加了圆角或者img没有父级)<div<imgsrc""/</divdiv{width:20px;height:20px;borderradius:20px;overflow:h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Souleigh ✨ Souleigh ✨
1年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
小森森 小森森
4个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本欢迎添加左边的微信一起探讨!项目地址:(https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n)\2.Bug修复更新日历2.情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意),\\和注意
晴空闲云 晴空闲云
4个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
3个月前
快速入门|使用MemFire Cloud构建React Native应用程序
MemFireCloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
helloworld_28799839 helloworld_28799839
4个月前
常用知识整理
Javascript判断对象是否为空jsObject.keys(myObject).length0经常使用的三元运算我们经常遇到处理表格列状态字段如status的时候可以用到vue