- 博客(40)
- 收藏
- 关注
原创 Docker部署SkyWalking+ElasticSearch+Agent
Docker部署SkyWalking+ElasticSearch+Agent 实现对java应用链路监控
2023-03-12 09:55:35 704
原创 性能监控平台环境搭建(二)
Docker+cAdvisor+Jmeter+InfluxDB+Grafana+Prometheus+JVM+Exporter 纯干货
2023-03-02 20:00:00 319
原创 压测监控平台环境搭建
Docker + JMeter + InfluxDB + Grafana +Prometheus+ node_exporter性能监控平台搭建
2023-02-26 17:13:43 228
原创 Docker部署教程
Docker 是一个开源的应用容器引擎,基于 go语言 并遵从 Apache2.0 协议开源,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化;容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker要求CentOS系统的内核版本最低是3.10,在部署前先通过命令uname -r 查看是否支持Docker。图片通过命令更新yum包到最新:sudo
2021-12-08 21:24:00 745
原创 性能测试之慢sql分析
我们在做性能测试的时候,慢sql也可以说是很常见问题,我的性能测试生涯几乎经常遇到慢sql,那么我们怎么来判断有没有慢sql呢,有慢sql后怎么来分析优化呢?下面分享一下思路,首先我们在做性能测试汇总能监控到慢sql的出现,在前面的文章中有写过监控mysql的环境部署,如图:通过上图看可以看到当存在慢sql的时候,这里会有计数,在之前我们还要查询一下有没有开启慢sql, 1.通过语句直接查询:show variables like 'slow_qu...
2021-10-18 21:00:00 323
原创 设计模式之迭代器模式
'''迭代器(Iterator)模式的定义: 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为型模式迭代器模式的优缺点如下:优点:1.访问一个聚合对象的内容而无须暴露它的内部表示。2.遍历任务交由迭代器完成,这简化了聚合类。3.它支持以不同方式遍历一个聚合,甚至可以自定义迭代器的子类以支持新的遍历。4.增加新的聚合类和迭代器类都很方便,无须修改原有代码。5.封装性良好,为遍历不同的聚合结构提供一个统一的接口。缺点:1.增加了类的.
2021-10-15 18:31:00 128
原创 设计模式之组合模式
组合(Composite Pattern)模式的定义: 有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单个对象和组合对象具有一致的访问性,属于结构型设计模式组合模式的优缺点如下:优点: 1.组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的 是单个对象,还是组合对象,这简化了客户端代码 2.更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码.
2021-10-15 18:29:50 123
原创 设计模式之建造者模式
建造者模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。建造者模式的优缺点如下:优点:1.封装性好,构建和表示分离。2.扩展性好,各个具体的建造者相互独立,有利于系统的解耦。3.客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块 产生任何影响,便于控制细节风险。缺点:1.产品的组成部分必须相同,这限制了其使用范围。2.如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同
2021-10-15 18:28:50 578
原创 设计模式之代理模式
代理模式的定义: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能 直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的优缺点如下:优点:1.代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用2.代理对象可以扩展目标对象的功能3.代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可 扩展性缺点:1.代理模式会造成系统设计中类的数量增加2.在客户端和目标对象之间增加一.
2021-10-15 18:27:36 85
原创 设计模式之模板模式
模板(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式模板模式的优缺点如下:优点:1.它封装了不变部分,扩展可变部分,它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展2.它在父类中提取了公共的部分代码,便于代码复用3.部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功...
2021-10-01 20:00:00 84
原创 设计模式之策略模式
策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的优缺点如下:优点: 多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if...else 语句、 switch...case 语句 策略模式提供了一系列的可供重用的算法族,恰当使...
2021-09-30 20:00:00 75
原创 设计模式之装饰器模式
装饰器(Decorator)模式的定义: 指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式装饰器模式的优缺点如下:优点:1.装饰器是继承的有力补充,比继承灵活,在不改变原有对象的情况下,动态的给一个对象扩展功能,即插即用2.通过使用不用装饰类及这些装饰类的排列组合,可以实现不同效果3.装饰器模式完全遵守开闭原则缺点:1.装饰器模式会增加许多子类,过度使用会增加程序的复杂性#装饰器模式的实现cla...
2021-09-29 20:00:00 205
原创 设计模式之抽象工厂模式
抽象工厂模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。使用抽象工厂模式一般要满足以下条件1.系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。2.系统一次只可能消费其中某一族产品,即同族的产品一起使用。抽象工厂模式除了具有工厂方法模式的优点外,还具有以下优缺点:.
2021-09-28 20:00:00 90
原创 设计模式之工厂方法模式
工厂方法模式的定义:工厂模式是一个在软件开发中用来创建对象的设计模式。工厂模式包含一个超类,这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。为了实现此方法,需要创建一个工厂类创建并返回。当程序运行输入一个“类型”的时候,需要创建于此相应的对象,这就用到了工厂模式.在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加能够产生新类型的子类。简短的说,当以下情形可以使用工厂模式:1.不知道...
2021-09-27 10:33:37 89
原创 设计模式之简单工厂模式
工厂模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中,这满足创建型模式中所要求的“创建与使用相分离”的特点。工厂模式有 3 种不同的实现方式,分别是1.简单工厂模式2.工厂方法模式3.抽象工厂模式我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。在简单工厂模式中创建实例的方法通常为静态(static)方法,因此简单工厂模式(Sim...
2021-09-26 10:18:13 80
原创 设计模式之单例模式
单例(Singleton)模式的定义: 指一个类只有一个实例,且该类能自行创建这个实例的一种模式。例如,Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误单例模式有 3 个特点:单例类只有一个实例对象 该单例对象必须由单例类自行创建 单例类对外提供一个访问该单例的全局访问点单例模式的优点和缺点如下:优点:1.单例模式可以保证内存里只有一个实例,减少了内存的开销2.可以避免对资源的多重占...
2021-09-25 15:42:23 89
原创 测试项目流程图
基于近几年的工作经验整理了一份通用的测试项目流程图,在实际工作中根据情况进行优化各阶段参与人员如下:测试管理:测试经理,测试员项目管理:产品经理,UI设计,测试员,技术开发,运维人员需求阶段:测试员设计阶段:测试员,UI设计,技术开发开发阶段:测试员,UI设计,技术开发测试阶段:测试经理,测试员,技术开发验收阶段:产品经理,UI设计,测试员,技术开发发布上线:测试经理,产品经理,运维人员,测试员,技术开发维护阶段:产品经理,运维人员,测试员,技术开发...
2021-09-18 13:45:24 291
原创 Python实现快速排序
'''快速排序原理:对于给定的一组序列,选择一个基准数,通过一论排序后,将原序列分为两部分,使得前面的比后面的小,然后再依次对前后进行拆分并排序,递归该过程,直到序列中所有数据均有序为止。算法过程如下:1.拆分:将序列拆分成2个非空子序列2.递归求解:通过递归调用快速分别对2个子序列进行排序3.合并:把排序好的2个子序列进行合并例如数组:{49,38,65,97,76,13,27,49},具体排序过程如下:第一次排序过程:初始化:[49,38,65,97,76,13,27,49]第..
2021-09-12 14:02:43 261
原创 Python实现归并排序
'''归并排序原理:对于给定的一组数据,首先将要排序长度为n的列表或者数组折中分成两个子列表或者数组长度分别为(n/2),第二次则分别将子序列分成总共4个子序列 每个子序列长度为(n/2/2) 以此继续分下去,直到子序列只剩下1个元素不能再分而停止.最后将其两两归并,反复执行此过程,直到得到一个有序序列为止。例如数组:{38,65,97,76,13,27},具体排序过程如下:拆分第1次:[38 65 97] [76 13 27]第2次:[38 65] [97] [76 13] [27].
2021-09-12 13:51:09 127
原创 Python实现插入排序
'''插入排序原理:将待排序序列的第一个元素当做已排序序列,其他的元素当做未排序序列,取未排序的第一个元素与已排序的最后一个元素进行比较,如果未排序的第一个元素小于已排序的最后一个元素则交换位置,交换位置后继续与前一个相邻位置的元素进行比较,当不需要交换时,则次轮插入完成。继续循环上面步骤,每进行一轮插入,已排序的序列加1,未排序的序列减1,一直到列表中的元素全部被插入到已排序的序列中为止,插入排序完毕。例如数组:{38,65,97,76,13,27,49},具体排序过程如下:第1轮插入38以后.
2021-09-12 13:49:19 135
原创 Python实现选择排序
'''选择排序的原理:对于给定的一组数,经过第一轮比较后得到最小的数,然后将这个最小的数与第一个进行交换位置,接着对不包含第一个数以外的其他数进行第二轮比较,再次得到最小的数并与第二个数进行位置交换,重复该过程,直到进行比较的数只有一个时为止。例如数组{38,65,97,76,13,27,49},具体排序过程如下:第一次排序后:13 [65,97,76,38,27,49]第二次排序后:13 27 [97,76,38,65,49]第三次排序后:13 27 38 [76,97,65,49]第四次排.
2021-09-11 17:33:46 184
原创 Python实现冒泡排序
'''冒泡排序原理:比较列表中相邻的两个元素大小,如果第2个元素比第1个元素大,就交换它俩的位置,从列表的开始到结尾,依次对每一组相邻的2个元素都进行比较,这样最大的元素就排到了最前面,第一轮排序结束。继续循环上面步骤,一直到只剩下一个元素没有排序为止,排序结束例如数组:{38,65,97,76,13,27,49},具体排序过程如下:第1轮排序:97 [65 76 38 27 49 13]第2轮排序:97 76 [65 38 27 49 13]第3轮排序:97 76 65 [38 27 49.
2021-09-11 17:33:34 160
原创 性能分析之htop
htop的安装下载安装包:wget http://hisham.hm/htop/releases/2.2.0/htop-2.2.0.tar.gz解压:tar -zxvf htop-2.2.0.tar.gz进入htop-2.2.0目录安装:./configure &&make && make install安装依赖gcc:yum install -y gcc安装依赖ncurses-devel:yum install -y ncurses-devel
2021-09-08 13:20:24 176
原创 混沌工程之Chaos Mesh(三)
今天继续说一下Chaos Mesh的使用,今天主要用它来模拟一下磁盘相关故障1.模拟磁盘注入故障通过 df -h 先看一下磁盘情况给磁盘添加10G内容:./blade create disk fill --size 10240查看一下磁盘情况,跟进㙦可看到10G内容是在为不断写入的通过dstat看一下io情况恢复故障:./blade destroy 7436e71389d5f4a0再次查看磁盘情况,恢复到了最初时候2.模拟注入IO故障常用参
2021-09-08 13:19:17 301
原创 混沌工程之Chaos Mesh(二)
上一篇文章介绍了Chaos Mesh的原理,工作流程以及它能做的事情,今天我们来进行一下Chaos Mesh的安装及使用。一.安装Chaos Mesh1.在线安装Chaos Mesh:wget -chttps://github.com/chaosblade-io/chaosblade/releases/download/v0.2.0/chaosblade-0.2.0.linux-amd64.tar.gz2.解压安装包:tar -zxvf chaosblade-0.2.0.linux-a.
2021-09-08 13:18:42 211
原创 混沌工程之Chaos Mesh(一)
Chaos Mesh是什么?它是一个云原生的混沌测试平台,它提供在 Kubernetes 平台上进行混沌测试的能力,最近在逛github的时候看见了混沌测试技术,自己本身也是一名测试工作者,好奇中就研究了一下混沌工程相关知识。我个人习惯学习新知识首先要知道它的工作原理,那么 接下来我们首先看一下Chaos Mesh 的工作原理1.Controller-manager 目前 controller-manager 可以分为两部分,一部分 controllers 用...
2021-09-08 13:17:16 380
原创 Arthas基础(三)
今天继续说一下Arthas的jvm相关命令及如何跟踪方法消耗时间等1.jvm-->可以查看当前jvm信息针对以上进行一下重要参数说明:RUNTIME(运行时间相关)CLASS-LOADING(类加载相关)GARBAGE-COLLECTORSMEMORY-MANAGERSMEMORY(内存)OPERATING-SYSTEM(操作系统相关)THREAD COUNT: JVM当前活跃的线程数 DAEMON-COUNT: JVM当前活跃的...
2021-09-08 13:11:31 198
原创 Arthas基础(二)
今天继续来说一下Arthas中的thread,这里的cpu使用率与linux 命令top -Hp <pid>的线程%CPU类似,一段采样间隔时间内,当前JVM里各个线程的增量cpu时间与采样间隔时间的比例。工作原理说明: 首先第一次采样,获取所有线程的CPU时间(调用的是java.lang.management.ThreadMXBean.getThreadCpuTime()和sun.management.HotspotThreadMBean.getIntern...
2021-09-08 13:09:13 2306
原创 Arthas基础(一)
Arthas是一款开源在线 Java 诊断工具,采用命令行交互模式,支持 web 端在线诊断,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。得益于 Arthas 强大且丰富的功能,让 Arthas 能做的事情超乎想象。Arthas的运行原理(网上找的图)Arthas命令行列表(网上找的图)Arthas的安装及启动直接在线下载:curl -O https://arthas.aliyun.com/arthas-boot.jar通过 java -jar arth
2021-09-06 10:32:00 3132
原创 linux之stress(模拟压力测试)
stress是一款模拟压力测试工具,他可以模拟cpu,内存,io等情况stress安装yum install -y epel-release yum install stress -ystress的使用1.模拟一颗cpu打满->stress -c 1通过htop查看一下cpu情况,可以看到有一颗cpu打满2.模拟多颗cpu打满->stress -c 4通过top命令查看一下cpu情况,可以看到有4颗cpu打满3.模拟产生2个进程,每个进程分配.
2021-09-06 10:31:41 690
原创 性能场景之异常场景
谈到异常场景,其实大家并不陌生,我们在做功能测试的时候,也要考虑异常用例,例如:切换网络,断网,中断使用等等。那么,性能中的异常场景,我们具体该怎么做呢?设计哪些问题才能将异常场景覆盖完整?这就需要我们明确两个关键点:一是异常场景的范围,二是异常场景的设计逻辑。异常场景的范围我理解的异常场景中,基本上采用的就是是宕主机、断网络、宕应用这几种测试手段。此外,从主机、网络、应用等角度出发,还会有一些细分操作,比如说:主机:断电、重启、关闭等。网络:关网卡、模...
2021-09-03 18:13:15 811
原创 性能场景之混合场景
混合场景也有人称之为容量场景,设置混合场景会涉及到很多限制条件,在做混合场景之前,我们一定要设定好目标,没有目标就没有结束标准,就有可能会无止境的优化下去。上面说到混合场景有很多限制条件,有人会问,到底有哪些呢?请大家思考一个问题,我们做混合场景的目的是什么?目标又应该如何去定呢?做混合场景的目的当然是为了测试出线上服务的最优支撑情况,达到最大支撑时候服务器的情况等。既然要测试出线程服务的最优情况,那么我们的性能测试环境的服务架构,应用到的软硬件等就要和线上对标或等比...
2021-09-02 15:37:17 447
原创 性能场景之稳定性场景
提起稳定性测试,有人会说7*24小时跑脚本,连续执行2天两夜,跑一晚上..............,个人觉得这些都没有任何依据,脚本的执行时间难道是一拍脑袋想多少就多少?我非常不赞同这些观点,凡事又要有依据,比如7*24小时执行脚本,是根据什么判断执行7*24小时后就一定没有问题,线上就一定不会出现问题呢?那么,稳定性场景应该怎么设计呢?个人认为设计稳定性场景只需要考虑2个关键点,运行时长和压力量级,下面针对这两个关键点进行说明为什么说运行时长是一...
2021-09-01 12:22:23 182
原创 性能场景之基准场景
性能测试场景有人也称为性能用例设计,不管如何称呼,在性能领域,性能场景设计是非常重要的,性能场景设计的是否准确代表性能测试结果是否有价值,例如,一个混合场景中有3个接口,线上用户对接口的占比分别为15%,58%,27%。而我们在设计场景的时候3个接口占比为30%,30%,40%,那么试想一下,这能模拟线上真实用户的使用轨迹嘛?那么性能场景应该如何设计呢?下面我阐述一下个人观点。在服务端性能测试中,性能场景可以分为基准场景,混合场景,稳定性场景,异常场景,接下来说一下这几个场景。...
2021-08-31 09:45:37 276
原创 Grafana+Prometheus监控mysql
在做性能测试的时候难免会被定位搞得晕头转向,那么有一套好的监控系统对于测试来说那就是天眼,今天我们就来搭建一套监控mysql数据库的监控系统Grafana+Prometheus+MySQL+Mysqld_Exporter。准备工具:MySQL:5.7InfluxDB:1.7.9Grafana:5.3.2Prometheus:Mysqld_Exporter:0.12.1一.安装MySQL1.下载mysql5.7:wget -i -c http://dev.mysql.co...
2021-08-30 12:29:49 241
原创 Grafana+Prometheus+Exporter监控服务器资源
我们在做性能测试的时候,当通过TPS和响应时间曲线看到出现性能瓶颈时候,我们需要拆分响应时间,找到接口请求过程中哪个服务上有问题,接着我们要去监控这个服务,通常监控服务我们都会用top命令来全局看一下服务器的整体资源消耗情况,例如:CPU,内存,IO,网络,负载情况等,而大家有知道top命令是实时监控服务器资源情况的,那么,历史资源消耗情况,我们是查看不到的,今天我给大家介绍要监控平台,不管什么时候去定位瓶颈我们都可以查看到服务器历史的资源消耗情况。上篇文章我们介绍了一种监控服务器资源的...
2021-08-30 12:27:52 386
原创 Grafana+InfluxDB+telegraf监控服务器
大家知道JMeter的PerfMonMetricsCollector插件支持收集服务器的性能指标,但是我们很少使用它,因为它收集起来的性能损耗太大了,另外,我们也需要收集JMeter的测试结果数据,在上文中,我们已经可以使用inflluxDB来存储性能测试结果,因此,我们也可以将服务器的性能数据存储到influxDB,那么通过Grafana我们可以实时得到一个炫酷的可视化看板。Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到InfluxDB 数据库。...
2021-08-30 12:24:50 345
原创 Jmeter+InfluxDB+Grafana环境搭建
性能测试之基准场景性能测试场景有人也称为性能用例设计,不管如何称呼,在性能领域,性能场景设计是非常重要的,性能场景设计的是否准确代表性能测试结果是否有价值,例如,一个混合场景中有3个接口,线上用户对接口的占比分别为15%,58%,27%。而我们在设计场景的时候3个接口占比为30%,30%,40%,那么试想一下,这能模拟线上真实用户的使用轨迹嘛?那么性能场景应该如何设计呢?下面我阐述一下个人观点。在服务端性能测试中,性能场景可以分为基准场景,混合场景,稳定性场景,异常场景,接下来说一下...
2021-08-28 11:20:12 565 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人