zoukankan      html  css  js  c++  java
  • 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的集群模式。

    image.png

  • 相关阅读:
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities II
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    Meten Special Activities
    冒泡排序和选择排序
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13295914.html
Copyright © 2011-2022 走看看