专栏首页JAVA杂谈SkyWalking 性能优化

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

本文分享自微信公众号 - JAVA日知录(java_daily)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 27 亿电子邮件地址外泄!ElasticSearch数据库再次中招

    数据泄露事件近年来时有发生,哪怕是大体量的Facebook也未能幸免。可以说数据泄露无论是对用户还是对企业来讲都造成了一定的损失和影响。针对频频发生的数据泄露事...

    用户6543014
  • 搜索卫士保驾护航,开源轮子不裸奔

    之前咱们在《傻瓜也能玩转日志归集》中一起认识、体验过 ELK 轮子,在微服务盛行的当下,做日志归集分析效果确实杠杠滴,但是有一点不得不提,那就是它们都在疯狂的裸...

    一猿小讲
  • 探究 | Elasticsearch 与传统数据库界限

    其实拿传统关系型数据库和 Elasticsearch 直接来对比有些牵强,毕竟一个是数据库,一个是搜索引擎。

    用户1390885
  • Elasticsearch-PHP简易使用(注:只做笔记-简易手册使用)

    composer require elasticsearch/elasticsearch

    93年的老男孩
  • Ubuntu 安装 Elasticsearch 和 elasticsearch-analysis-ik 分词

    hedeqiang
  • 微服务业务监控和行为分析怎么做?试试日志埋点

    互联网公司一般都会有专门的数据团队对公司的一些业务指标负责;为了拿到这些基本的业务指标,一般也要工程团队去配合做一些数据采集工作,于是埋点诞生了。

    Java_老男孩
  • 探究 | Elasticsearch集群规模和容量规划的底层逻辑

    问题 1:请问下大家是如何评估集群的规模?比如数据量达到百万,千万,亿万,分别需要什么级别的集群,这要怎么评估?

    用户1390885
  • CVE-2019-7609:Kibana远程代码执行漏洞复现

    Kibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据...

    PaperPen
  • Elasticsearch 的简单使用

    关于安装就不多说了,以前的版本安装起来还停麻烦,需要你预先 安装 JDK,但是 Elasticsearch 7 及以后的版本相对来说 安装非常简单,内置一个 O...

    hedeqiang
  • elasticsearch snapshot

    https://www.cnblogs.com/mayidudu/p/6094014.html

    二狗不要跑

扫码关注云+社区

领取腾讯云代金券