SkyWalking 性能优化

本贴最后更新于 1826 天前,其中的信息可能已经时过境迁

如果你正在使用 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 一直在频繁进行 Yong 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,为了减少 Yong 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 的集群模式。

image.png

标题:SkyWalking 性能优化
作者:jianzh5
地址:http://www.javadaily.cn/articles/2019/12/23/1577088466014.html

  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    288 引用 • 734 回帖 • 1 关注
  • SkyWalking
    17 引用 • 10 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    几个菜啊,吃点头孢

  • someone
    作者

    你怎么如此之骚