SkyWalking的学习之二(性能优化以及log)

发布时间 2023-11-20 07:23:26作者: 济南小老虎

SkyWalking的学习之二(性能优化以及log)


背景

周六在家学习了SkyWalking的交单部署和agent的方式获取日志.
万恶的周天上班到公司发现出现了宕机.

具体原因是我想进行SkyWalking的处理时的logback的配置文件出现了异常.
今天还发现了很多别的问题,比如启动太慢,是不是的卡顿等.
想着今天晚上继续整理一下, 优化自己的学习. 

性能优化

SkyWalking 的默认内存堆区非常小, 只有 512M
我这边有一个接近30个微服务的场景, 运行一会儿之后就会导致卡顿
所以需要进行优化.
按照我对性能朴素的理解, 需要加大堆区可以进行尝试.
第二步是不适用h2换用其他的工具.进行存储.
修改内存的方法为:

vim apache-skywalking-apm-bin/bin/webappService.sh
大概是第  23行, 将-Xms和-Xmx修改为 24G左右. 避免出现大量的GC

以及 
vim apache-skywalking-apm-bin/bin/oapService.sh
大概也是第  23行, 将-Xms和-Xmx修改为 24G左右. 避免出现大量的GC

可以修改:
vim apache-skywalking-apm-bin/config/application.yml
内的端口指定非标准端口, 便于使用. 

抓取日志-1

因为我们产品其实使用的是logback
skywalking 其实是支持抓取logback的日志的. 
所以准备采用一下logback进行相关的处理

因为我这边的岗位没有具体的代码以及pom权限, 所以我只能通过maven仓库获取文件进行替换的方式. 
具体的方法为:
将依赖的jar包放到产品的 runtime/3rd 目录下面. 
https://repo1.maven.org/maven2/org/apache/skywalking/apm-toolkit-logback-1.x/8.9.0/

其实本质是利用一般群里的pom依赖进行处理:
   <dependency>
         <groupId>org.apache.skywalking</groupId>
         <artifactId>apm-toolkit-logback-1.x</artifactId>
         <version>{skywalking.version}</version>
     </dependency>

抓取日志-2

添加了 第三方jar包之后需要修改 logback的配置文件:

增加上一段信息:
  <appender name="skywalking" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
      <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
            </layout>
        </encoder>
</appender>

然后 注意这个是需要添加进来的不是需要新增一行.
<root level="ERROR">
    <appender-ref ref="skywalking" />
</root>

抓取日志-3

增加了jar包,修改了配置文件
还需要修改一下 skywalking 的agent的配置.
vim skywalking-agent/config/agent.config
如果没有, 需要增加如下内容, 如果要dump到其他服务器, 需要修改一下 HOST的信息. 
以及端口信息, 保证能够将日志正确的打进来.

# 指定要向其报告日志数据的GRPC服务器主机
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.110.139.xxx}
# 指定要向其报告日志数据的GRPC服务器端口
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
# 指定GRPC客户端要报告的日志数据的最大大小
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
# 客户端向上游发送数据时将超时多长时间,单位是秒
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}