当前位置: 首页 > news >正文

温州平阳县企业网站搭建推荐网站规划与建设ppt模板下载

温州平阳县企业网站搭建推荐,网站规划与建设ppt模板下载,有没有做任务的网站吗,网站建设目标个人博客dwApache SkyWalking 是一个开源的应用性能监控 (APM) 工具,支持分布式系统的追踪、监控和诊断。SkyWalking Agent 是其中的一个重要组件,用于在服务端应用中收集性能数据和追踪信息,并将其发送到 SkyWalking 后端服务器进行处理和展示。 SkyW…

Apache SkyWalking 是一个开源的应用性能监控 (APM) 工具,支持分布式系统的追踪、监控和诊断。SkyWalking Agent 是其中的一个重要组件,用于在服务端应用中收集性能数据和追踪信息,并将其发送到 SkyWalking 后端服务器进行处理和展示。

SkyWalking Agent 的工作原理

  1. 启动时加载 Agent
    SkyWalking Agent 通过 Java Agent 机制,在 JVM 启动时加载。用户需要在启动应用时添加 -javaagent 参数,指定 SkyWalking Agent 的 JAR 文件。

    java -javaagent:/path/to/skywalking-agent.jar -jar your-application.jar
  2. 字节码增强
    SkyWalking Agent 使用字节码增强技术(基于字节码操作库如 ASM)来修改应用程序的类文件,以插入监控代码。这些代码会在方法调用、数据库访问、HTTP 请求等关键点收集性能数据。

  3. 拦截方法调用
    通过字节码增强,Agent 拦截应用程序中的特定方法调用(如 HTTP 请求、数据库查询等)。在方法开始前、方法结束后和异常抛出时,Agent 会记录相关信息。

  4. 收集性能数据和追踪信息
    拦截的方法调用会生成追踪数据,这些数据包括:

    • 方法执行的开始时间和结束时间
    • 方法执行的耗时
    • 调用链上下文信息(如 Trace ID、Span ID)
    • 方法的输入输出参数和异常信息
  5. 数据缓冲和发送
    收集到的数据会暂时存储在 Agent 的内存中,并定期批量发送到 SkyWalking 后端服务器。为了减少对应用程序性能的影响,数据发送通常是异步进行的。

  6. 后端处理和展示
    SkyWalking 后端服务器接收到数据后,会对其进行处理、存储,并在 Web UI 中展示。用户可以通过 Web UI 查看服务的调用链、性能指标、错误信息等。

SkyWalking Agent 的关键组件

  • Agent Core:负责 Agent 的初始化、配置加载和生命周期管理。
  • Plugin System:SkyWalking Agent 提供了插件系统,支持不同类型的 middleware、framework 的插件,如 HTTP、Dubbo、Spring、MyBatis 等。这些插件定义了如何拦截特定的框架方法,收集性能数据。
  • Tracing Context:管理调用链上下文,包括 Trace ID 和 Span ID 的生成和传递。
  • Reporter:负责将收集到的数据发送到 SkyWalking 后端服务器。

自己实现一个java agent 

Java Agent 是 Java Instrumentation API 的一个强大功能,它允许你在运行时修改 Java 应用程序的行为。它们通常用于性能分析、监控和修改应用程序的执行。

自己实现一个 实现一个 Java Agent 来监控 JDBC SQL 执行时间

步骤 1:创建 Java Agent

  1. 创建 Agent 类:
    该类将实现 premain 方法来进行类的插桩。
import java.lang.instrument.Instrumentation;
import java.lang.instrument.ClassFileTransformer;
import java.security.ProtectionDomain;public class SqlTimingAgent {public static void premain(String agentArgs, Instrumentation inst) {System.out.println("SQL Timing Agent loaded");inst.addTransformer(new SqlTimingTransformer());}
}
  1. 创建 Transformer 类:
    该类将对 java.sql.Statement 和 java.sql.PreparedStatement 的 execute* 方法进行插桩。
import java.lang.instrument.ClassFileTransformer;
import java.security.ProtectionDomain;
import java.lang.instrument.IllegalClassFormatException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;public class SqlTimingTransformer implements ClassFileTransformer {@Overridepublic byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {if (className.equals("java/sql/Statement") || className.equals("java/sql/PreparedStatement")) {return transformSQLClass(className, classfileBuffer);}return classfileBuffer;}private byte[] transformSQLClass(String className, byte[] classfileBuffer) {try {ClassPool cp = ClassPool.getDefault();CtClass cc = cp.get(className.replace("/", "."));for (CtMethod m : cc.getDeclaredMethods()) {if (m.getName().startsWith("execute")) {addTiming(m);}}return cc.toBytecode();} catch (Exception e) {e.printStackTrace();}return classfileBuffer;}private void addTiming(CtMethod method) throws Exception {method.addLocalVariable("startTime", CtClass.longType);method.insertBefore("startTime = System.currentTimeMillis();");method.insertAfter("System.out.println(\"SQL Execute Time: \" + (System.currentTimeMillis() - startTime) + \" ms\");");}
}

步骤 2:创建 Manifest 文件

创建一个 MANIFEST.MF 文件来指定代理类。

Manifest-Version: 1.0
Premain-Class: SqlTimingAgent

 步骤 3:将 Agent 打包为 JAR

 编译你的代理类和 Transformer 类,并将它们与 manifest 文件一起打包到 JAR 文件中。

javac SqlTimingAgent.java SqlTimingTransformer.java
jar cfm SqlTimingAgent.jar MANIFEST.MF SqlTimingAgent.class SqlTimingTransformer.class

步骤 4:使用 Java Agent

在启动 Java 应用程序时使用 -javaagent 选项指定代理 JAR 文件。

java -javaagent:SqlTimingAgent.jar -jar YourApplication.jar
 

示例解释

  • SqlTimingAgent 类

    • premain 方法在 JVM 启动时被调用,添加 SqlTimingTransformer 作为类文件转换器。
  • SqlTimingTransformer 类

    • 该类实现了 ClassFileTransformer 接口,对 java.sql.Statement 和 java.sql.PreparedStatement 类进行转换。
    • 在 transform 方法中,检查类名是否是 Statement 或 PreparedStatement,并调用 transformSQLClass 方法。
    • transformSQLClass 方法使用 Javassist 库修改类的字节码,对 execute* 方法添加时间记录代码。
  • 字节码修改

    • 在 execute* 方法开始前记录当前时间。
    • 在方法结束后,计算并输出 SQL 执行时间。

通过这些步骤,你可以创建和使用 Java Agent 来监控 JDBC SQL 执行时间。

http://www.sczhlp.com/news/127907/

相关文章:

  • 网站 为什么要备案外发加工网有什么软件
  • 住房与城乡建设局网站公司做一个网页多少钱
  • 下周审核4家IPO,2家再融资。其中两家IPO企业于在审期间调减募资规模
  • 昌吉做网站网站怎么设置支付
  • 招聘网站设计论文祁东网站设计公司
  • 淘宝网站怎么建设支付网站技术服务费怎么做分录
  • wordpress没有显示安装插件清远seo站内优化
  • yahoo网站提交网络运营公司排名
  • 买正品去哪个网站最好公司展示类网站模板
  • 快速建站公司有哪些网站改版301重定向
  • 石家庄栾城区建设局网站中铁建设集团有限公司是国企还是央企
  • 发布了一个网站 显示建设中建设网站学习
  • 100元网站建设wordpress posted on
  • 网站自适应百度网做网站吗
  • 专业网站设计师去哪找国家高职示范校建设网站
  • 国外做的比较好的网站有哪些吉安信息网
  • html5网站后台怎么做个人网站备案 法律说明
  • 营销型网站建设区别网站建设柒金手指花总12
  • 笔趣阁 网站开发建设银行个人登录网站
  • 公司网站的建设内容怎么写建设电影网站如何赚钱
  • 张家界网站制作渭南最新防疫信息
  • 北京网站开发公司前十名现代化专业群建设专题网站护理专业
  • 做外贸大一点的网站简单的企业网页模板
  • 著名的网站有哪些搞笑视频网站建设策划书
  • 赢展网站建设做期货黄金哪个网站信息数据准
  • 网站编辑转行做文案可以做审计初级题的网站
  • html5做登录网站的代码电视墙装修效果图2023新款
  • 创新的微商城网站建设营销型外贸网站建设软件
  • 网站添加字体山东广饶县建设局网站
  • 百度站长平台删站湖南营销网站建设联系方式