由于工作的原因,或者说我们之前内部监控设计和实现有点不满足现有的研发需求,所以调研了一下大众点评开源出来的cat这一套监控系统。

今天我们就来实验一把,cat的客户端埋点在我们的程序流程中上报数据到cat的服务端这个流程对我们程序性能的影响。

测试工具

Jmeter

测试环境

Cat部署在内网192.168.84.27,内存6G,CPU 4核

单台cat和单台dubbo

代码

原接口代码

public String kongjiekou() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
JSONObject object = new JSONObject();
object.put("msg", "这是一个空接口");
return object.toJSONString();
}

埋1个点接口代码

public String kongjiekou() {
Transaction transaction = Cat.newTransaction("inner", "kongjiekou");
try {
Cat.logMetricForCount("kongjiekou");//埋一个点
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
Cat.logError(e);
} finally {
transaction.complete();
}
JSONObject object = new JSONObject();
object.put("msg", "这是一个空接口");
return object.toJSONString();
}

埋100个点接口代码

public String kongjiekou() {
Transaction transaction = Cat.newTransaction("inner", "kongjiekou");
try {
for (int i = 0; i < 100; i++) {
Cat.logMetricForCount("kongjiekou"+i);//埋100个点
}
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
Cat.logError(e);
} finally {
transaction.complete();
}
JSONObject object = new JSONObject();
object.put("msg", "这是一个空接口");
return object.toJSONString();
}

统计数据

Dubbo中的kongjiekou接口原先并发效率

并发量(1s)

平均耗时(ms)

耗时中位数(ms)

错误率

100

1036

1023

0.00%

500

2009

1955

0.00%

1000

3069

3032

0.00%

接入cat客户端埋1个点之后

并发量(1s)

平均耗时(ms)

耗时中位数(ms)

错误率

100

1061

1040

0.00%

500

2154

2085

0.00%

1000

3352

2955

0.00%

接入cat客户端埋100个点之后

并发量(1s)

平均耗时(ms)

耗时中位数(ms)

错误率

100

1143

1024

0.00%

500

2333

2285

0.00%

1000

3435

2920

0.00%

并且在多次性能测试过程中,内存占用情况并没有明显升高,CPU也是正常的执行时长高到正常值,执行后恢复,每次的内存和CPU峰值都相差无几。由于研发内网的带宽本身就极不稳定,所以带宽指标这里先不做判定。

总结

从以上结果得出初步结论,cat的监控埋点对被监控程序本身的性能的影响可忽略不计。

【原创】大众点评监控平台cat的性能分析的更多相关文章

  1. 大众点评开源分布式监控平台 CAT 深度剖析

    一.CAT介绍 CAT系统原型和理念来源于eBay的CAL的系统,CAT系统第一代设计者吴其敏在eBay工作长达十几年,对CAL系统有深刻的理解.CAT不仅增强了CAL系统核心模型,还添加了更丰富的报 ...

  2. 大众点评Java开发实时应用监控平台-CAT

    CAT介绍 CAT是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控. CAT作为大众点评网基础监控组件,它已经在中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等)中得到广泛应 ...

  3. Java生鲜电商平台-API请求性能调优与性能监控

    Java生鲜电商平台-API请求性能调优与性能监控 背景 在做性能分析时,API的执行时间是一个显著的指标,这里使用SpringBoot AOP的方式,通过对接口添加简单注解的方式来打印API的执行时 ...

  4. 大众点评APP分析随笔

    移动APP:大众点评 一.最核心功能:店铺评价功能,用户可以通过此功能对商家进行评分,也可以获取其他人对商家的评分信息. 二.核心功能满足的需求: 1. 去过商家消费的用户:用户已经体验的商家提供的产 ...

  5. 一款类似loadRunner的优秀国产压力测试工具——kylinTOP测试与监控平台

    市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋般崛起,但大部分产品是基于Jmeter开源内核包装起来的性能测试工具,其中也不乏佼佼者,如:kylinTOP测试与 ...

  6. 搭建大众点评CAT监控平台

    CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控.关于CAT的具体介绍可移步到CAT官网进行查阅. 1. 环境清单 C ...

  7. 大众点评CAT开源监控系统剖析

    参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监控系统的设计与实现 深度剖析开源分布式监控CAT [分布式监控CAT] Client端源 ...

  8. 【转】大众点评CAT开源监控系统剖析

    https://www.cnblogs.com/yeahwell/p/cat.html 参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监 ...

  9. 大众点评cat实时监控简介及部署

    简介 背景 CAT(Central Application Tracking)是由吴其敏(前大众点评首席架构师,现携程架构负责人)主导设计基于Java开发打造的实时应用监控平台,为大众点评网提供了全面 ...

随机推荐

  1. Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全

    导读 行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛.一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器.QLineEdit本身使用方法也很简单,无需过多的设置就能 ...

  2. 适用于jquery1.11.1的ajaxfileupload.js

    ajaxfileupload源码 解决上传成功不走success的问题 解决高版本jquery兼容性问题 jQuery.extend({ createUploadIframe: function(id ...

  3. 使用EasyUI的插件前需要引入的文件

    一.使用EasyUI的插件需要引入一些文件 1.引入相关文件 easyui.css: easyUi的样式文件 icon.css:easyUI的图标样式文件 easyui.min.js:easyUi的类 ...

  4. How to create water Ripple effect using HTML5 canvas

    https://www.script-tutorials.com/how-to-create-water-drops-effect-using-html5-canvas/ https://www.sc ...

  5. LeetCode128:Longest Consecutive Sequence

    题目: Given an unsorted array of integers, find the length of the longest consecutive elements sequenc ...

  6. mongodb安装与使用

    一.在linux服务器中安装mongodb 1.首先你要有一台安装有linux系统的主机 2.从mongoDB官网下载安装包:http://www.mongodb.org/downloads 3.将下 ...

  7. C语言范例学习03-中

    栈和队列 这两者都是重要的数据结构,都是线性结构.它们在日后的软件开发中有着重大作用.后面会有实例讲解. 两者区别和联系,其实总结起来就一句.栈,后进先出:队列,先进先出. 可以将栈与队列的存储空间比 ...

  8. OpenGL 圆角矩形

    本来打算用四个圆角GL_TRIANGLE_FANS+两个矩形来填充, 后来经无情公子的提醒, 突然发现:"尼玛就是一压扁了的圆啊!" 于是全部用GL_TRIANGLE_FANS, ...

  9. JS 面向对象 编程设计

    面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...

  10. js填写银行卡号,每隔4位数字加一个空格

    1.原生js写法 !function () { document.getElementById('bankCard').onkeyup = function (event) { var v = thi ...