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}