【性能测试】ChaosTesting(混沌测试)ChaosBlade(混沌实验工具)(六)-servelt

7. servelt接口规范

7.0 创建servelt

        blade create servlet

7.0.1 介绍

Servlet 是 Java 的 web 的接口规范,Java web 服务器都遵循此规范实现。本场景主要模拟 Java Web 请求延迟、异常场景。

  1. [blade create servlet delay](blade create servlet delay.md) 请求延迟
  2. [blade create servlet throwCustomException](blade create servlet throwCustomException.md) 请求异常

7.0.2 参数

servlet 通用参数
–effect-count string: 影响的请求条数
–effect-percent string: 影响的请求百分比
–method string: HTTP 请求类型, 例如: GET, POST, or PUT.
–pathinfo string: 已废弃
–pid string: java进程号
–process string: java进程名
–querystring string: 请求参数,例如http://localhost:8080/dubbodemo/async?name=friend&timeout=2000 中 querystring的值是 name=friend&timeout=2000
–requestpath string: 请求 URI,不包含 Context 部分,例如 http://localhost:8080/dubbodemo/async?name=friend&timeout=2000,则 requestpath 的值是 /async,注意要带 /
–servletpath string: 已废弃

7.0.3 常见问题

Q: 下发规则不生效

A: 在命令后添加 --debug,然后触发业务请求,查看应用进程用户目录下 logs/chaosblade/chaosblade.log 日志,如下:

2019-12-09 21:15:12 DEBUG servlet matchers: {"matchers":{"querystring":"name=bobo","servletpath":"/servlet/path","method":"GET","requestpath":"/servlet/path"}}
2019-12-09 21:15:12 INFO  Match rule: {"action":{"name":"delay"},"actionName":"delay","matcher":{"matchers":{}},"target":"servlet"}

servlet matchers 日志表示获取应用的匹配数据,Match rule 表示和下发的命令匹配

7.1 Java web 请求延迟

        blade create servlet delay

7.1.1 参数

以下是此场景特有参数,通用参数详见:[blade create servlet](blade create servlet.md)
–time string: 延迟时间,单位是毫秒,必填项
–offset string: 延迟上下浮动时间,例如 --time 3000 --offset 1000,延迟时间的取值范围是 2000-4000 毫秒

7.1.2 案例

访问 http://localhost:8080/dubbodemo/servlet/path?name=bob 请求延迟 3 秒,影响 2 条请求

blade c servlet delay --time 3000 --requestpath /servlet/path --effect-count 2{"code":200,"success":true,"result":"154c866919172119"}

访问请求进行验证。
请求参数是 name=family,延迟 2 秒,延迟时间上下浮动 1 秒,影响范围是 50% 的请求,同时开启 debug 日志用于排查问题,命令如下:

blade c servlet delay --time 2000 --offset 1000 --querystring name=family --effect-percent 50 --debug{"code":200,"success":true,"result":"49236d2406d168f4"}

监控 应用进程用户目录/logs/chaosblade/chaosblade.log 日志
在这里插入图片描述
可以看到下发了 create 指令并开启 debug 日志。 请求两次 http://localhost:8080/dubbodemo/servlet/path?name=bob ,由于参数 querystring 和下发的命令不匹配,所以没有生效 随后请求两次 http://localhost:8080/dubbodemo/servlet/path?name=family,第一次打印了 Match rule 日志,说明匹配成功,延迟生效;第二次打印了 limited by,说明匹配成功,但是由于 effect-percent 参数的限制,所以场景被限制,此请求没有发生延迟

7.2 Java web 请求异常

        blade create servlet throwCustomException

7.2.1 参数

以下是此场景特有参数,通用参数详见:[blade create servlet](blade create servlet.md)
–exception string: 异常类,带全包名,必须继承 java.lang.Exception 或 java.lang.Exception 本身
–exception-message string: 指定异常类信息,默认值是 chaosblade-mock-exception

7.2.2 案例

访问 http://localhost:8080/dubbodemo/hello?code=1 请求异常,影响 3 条请求

blade c servlet throwCustomException --exception org.springframework.beans.BeansException --exception-message mock-beans-exception --requestpath /hello --effect-count 3{"code":200,"success":true,"result":"d4a63f4f59f76f4a"}

访问请求进行验证。
在这里插入图片描述

查看日志,通过日志也可以看出
在这里插入图片描述

8. 其他

8.1 server

        blade server
后台启动 blade,会暴露出 web 服务,上层可通过 http 调用

8.1.1 介绍

在 server 模式下,blade 程序会对外暴露 web 服务,上层可通过 http 请求调用,请求格式是 chaosblade?cmd=具体命令,例如执行 CPU 满载,则请求是 chaosblade?cmd=create%20cpu%20fullload

8.1.2 命令

start: 启动 server 模式, 暴露 web 服务
stop: 停止 server 模式, 关闭 web 服务

8.1.3 start 命令参数

-p, --port string 服务端口号,默认是 9526

8.1.4 案例

# 启动 server 模式,服务端口是 8080
blade server start --port 8080
success, listening on 8080# 触发 CPU 负载 50% 场景
curl "http://xxx.xxx.xxx.xxx:8080/chaosblade?cmd=create%20cpu%20load%20--cpu-percent%2050"{"code":200,"success":true,"result":"e08a64a9af02c393"}# 销毁实验场景
curl "http://xxx.xxx.xxx.xxx:8080/chaosblade?cmd=destroy%20e08a64a9af02c393"# 停止 blade server
blade server stop{"code":200,"success":true,"result":"pid is 12619"}

8.1.5 常见问题

Q: {“code”:605,“success”:false,“error”:“the chaosblade has been started. If you want to stop it, you can execute blade server stop command”}
A: 服务已经启动

Q: {“code”:500,“success”:false,“error”:“time=“2019-09-25T11:36:28.321495762+08:00” level=error msg=“start blade server error, listen tcp :8080: bind: address already in use”\n”}
A: 端口已被占用

8.2 status

        blade status
查询混沌实验和混沌实验环境状态

8.2.1 介绍

查询混沌实验和混沌实验环境状态,可通过创建的混沌实验的 uid 或命令类型来查询混沌实验。 status 可以简写为 s,即 blade status 可以简写为 blade s

8.2.2 参数

–asc bool: 默认值为 false,按 CreateTime 进行降序排序
–limit string: 查询实验数目限制,支持 OFFSET 子句,例如:limit 4,3 就表示从位置5开始,返回后3项
–status string: 实验状态,create 类型支持 Created|Success|Error|Destroyed 状态,prepare 类型支持 Created|Running|Error|Revoked 状态
–target string: 实验目标,例如:dubbo
–type string: 命令类型,attach|create|destroy|detach
–uid string: prepare 或 experiment 的 uid
-h, --help: 查看 create 命令帮助
可使用的父命令参数
-d, --debug: 设置 DEBUG 执行模式

8.2.3 案例

# 查看 status 命令帮助文档
blade status -h# 查询 uid 为 4c6b4a3fc313e1d4 的实验信息
blade status 4c6b4a3fc313e1d4
{"code": 200,"success": true,"result": {"Uid": "4c6b4a3fc313e1d4","Command": "cpu","SubCommand": "fullload","Flag": " --cpu-percent=60","Status": "Destroyed","Error": "","CreateTime": "2020-01-14T14:09:49.152708+08:00","UpdateTime": "2020-01-14T14:10:45.605888+08:00"}
}# 查询 create 类型命令的实验信息
blade status --type create
{"code": 200,"success": true,"result": [{"Uid": "4c6b4a3fc313e1d4","Command": "cpu","SubCommand": "fullload","Flag": " --cpu-percent=60","Status": "Destroyed","Error": "","CreateTime": "2020-01-14T14:09:49.152708+08:00","UpdateTime": "2020-01-14T14:10:45.605888+08:00"}]
}# 查询 prepare 类型命令的实验信息
blade status --type prepare
{"code": 200,"success": true,"result": [{"Uid": "e669d57f079a00cc","ProgramType": "jvm","Process": "dubbo.consumer","Port": "59688","Status": "Running","Error": "","CreateTime": "2019-03-29T16:19:37.284579975+08:00","UpdateTime": "2019-03-29T17:05:14.183382945+08:00"}]
}

8.2.4 常见问题

Q: {“code”:406,“success”:false,“error”:“data not found”}
A: 查询的实验不存在,可能是数据文件 chaosblade.dat 丢失,这时如果需要停止实验,需要手工停止 blade 进程

8.3 打印 blade 工具版本信息

        blade version

8.3.1 介绍

打印 blade 工具版本信息。 version 可以简写为 v,即 blade version 可以简写为 blade v。

8.3.2 参数

-h, --help: 查看 create 命令帮助
可使用的父命令参数
-d, --debug: 设置 DEBUG 执行模式

8.3.3 案例

# 查看 blade 工具版本信息
blade version
version: 0.4.0  # 版本
env: Darwin Kernel Version 19.0.0: Wed Sep 25 20:18:50 PDT 2019; root:xnu-6153.11.26~2/RELEASE_X86_64 x86_64    # 环境信息
build-time: Thu Dec  5 14:29:44 CST 2019    # 构建时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981915.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

网页自动跳转到其他页面,点击浏览器返回箭头,回不到原来页面的问题

背景&#xff1a;今天产品提个需求&#xff0c;需要从index页面自动触发跳转到下一页面的事件&#xff0c;从而不做任何操作&#xff0c;直接跳转到test页面。 代码是这样的&#xff1a; index.vue: <template><div style"width:500px;height:600px;background-…

WIFISKY 7层流控路由器 confirm.php RCE漏洞复现

0x01 产品简介 WIFISKY-7层流控路由器是一款可用于家庭或办公环境的无线路由器,具备流控功能以优化网络流量和提供更稳定的网络连接。该路由器采用了7层流控技术,能够依据网络数据包的内容进行智能管理,从而实现对网络流量的精细化控制和优化。这种技术可以提升网络的整体性…

Science Robotics 美国斯坦福大学研制了外行星洞穴探测机器人

月球和火星上的悬崖、洞穴和熔岩管已被确定为具有地质和天体生物学研究理想地点。由于其隔绝特性&#xff0c;这些洞穴提供了相对稳定的条件&#xff0c;可以促进矿物质沉淀和微生物生长。在火星上&#xff0c;这些古老的地下环境与火星表面可能适合居住时几乎没有变化&#xf…

孙中亮:北斗三十周年,看北斗芯片高质量发展历程和方向

1994年1月10日&#xff0c;北斗一号建设正式启动&#xff0c;党中央决策建设独立自主的北斗卫星导航系统。2020年7月31日&#xff0c;北斗三号全球卫星导航系统正式开通&#xff0c;标志着北斗系统进入全球化发展新阶段。随着2024年的到来&#xff0c;北斗系统建设已走过栉风沐…

上位机图像处理和嵌入式模块部署(树莓派4b与视觉slam十四讲)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 实际使用中&#xff0c;树莓派4b是非常好的一个基础平台。本身板子价格也不是很贵&#xff0c;建议大家多多使用。之前关于vslam&#xff0c;也就是…

ChatGPT实战100例 - (18) 用事件风暴玩转DDD

文章目录 ChatGPT实战100例 - (18) 用事件风暴玩转DDD一、标准流程二、定义目标和范围三、准备工具和环境四、列举业务事件五、 组织和排序事件六、确定聚合并引入命令七、明确界限上下文八、识别领域事件和领域服务九、验证和修正模型十、生成并验证软件设计十一、总结 ChatGP…

力扣HOT100 - 108. 将有序数组转换为二叉搜索树

解题思路&#xff1a; 二叉搜索树一般使用中序遍历 class Solution {public TreeNode sortedArrayToBST(int[] nums) {return helper(nums,0,nums.length-1);}public TreeNode helper(int[] nums,int left,int right){if(left>right) return null;//确定根节点//总是选择中…

2024年阿里云域名注册活动,com域名1元起,cn域名33元起

随着互联网的飞速发展&#xff0c;一个好的域名已经成为了企业或个人在线身份的重要标志。注册域名是很多用户开启互联网业务的第一步&#xff0c;2024年很多注册商现在com域名注册都快逼近80元了。作为国内最大的域名注册商与云服务商&#xff0c;近日&#xff0c;阿里云推出了…

提升你的C编程技能:使用cURL下载Kwai视频

概述 本文将介绍如何利用C语言以及cURL库来实现Kwai视频的下载。cURL作为一个功能强大的网络传输工具&#xff0c;能够在C语言环境下轻松地实现数据的传输。我们还将探讨如何运用代理IP技术&#xff0c;提升爬虫的匿名性和效率&#xff0c;以适应Kwai视频平台的发展趋势。 正…

Java web应用性能分析之【Linux服务器性能监控分析概叙】

大多数场景&#xff0c;我们的Java web应用都是部署在linux环境&#xff0c;所以对linux服务器的性能指标需要有一个比较清晰的认识。Linux服务器的性能指标无非就5个方面&#xff1a;CPU、内存、磁盘、网络、文件系统。不同的性能指标都有对应的命令进行监控和查看&#xff08…

【前端面试常问】什么是前端工程化

&#x1f31f;【前端面试常问】前端工程化&#x1f31f; &#x1f4da; 什么是前端工程化&#xff1f; &#x1f389; 前端工程化&#xff0c;简而言之&#xff0c;是通过整合先进的工具链和最佳实践&#xff0c;将前端开发过程实现标准化、自动化和高效化的过程&#xff0c;…

美森快船和以星快船有什么区别?美线海运都有哪些快船?

在繁忙的国际海运市场中&#xff0c;快船服务以其高效、快捷的特点受到广大货主的青睐。其中&#xff0c;美森快船和以星快船作为知名的海运服务提供商&#xff0c;凭借着卓越的服务品质&#xff0c;在航运界树立了良好的口碑。那么&#xff0c;美森快船和以星快船究竟有何不同…

探讨自回归模型和扩散模型的发展应用

在当前大模型驱动的内容创新浪潮中&#xff0c;人工智能产业正以前所未有的力度拥抱一场由大模型技术策动的科技革新运动。这场革命不仅重塑了人机交互的边界&#xff0c;使其跃升至更高层次的认知协作&#xff0c;而且正在颠覆传统的计算思维与执行模式&#xff0c;催生出全新…

SpringCloud引入SpringBoot Admin

Spring Boot Admin可以监控和管理Spring Boot&#xff0c;能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供警报功能。 1. 创建SpringBoot工程 2. 引入相关依赖 <dependency><groupId>com.alib…

安全小课堂丨什么是暴力破解?如何防止暴力破解

什么是暴力破解&#xff1f; 暴力破解也可称为穷举法、枚举法&#xff0c;是一种比较流行的密码破译方法&#xff0c;也就是将密码进行一一推算直到找出正确的密码为止。比如一个6位并且全部由数字组成的密码&#xff0c;可能有100万种组合&#xff0c;也就是说最多需要尝试10…

Python-VBA函数之旅-isinstance函数

目录 一、isinstance函数的常见应用场景&#xff1a; 二、isinstance函数使用注意事项&#xff1a; 三、如何用好isinstance函数&#xff1f; 1、isinstance函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff…

网络安全之SQL注入及防御(下篇)

目录 什么是SQL注入&#xff1f; 一&#xff0c;SQL注入会导致什么呢&#xff1f; 二&#xff0c;SQL注入思想与步骤 三&#xff0c;SQL注入的绕过 四&#xff0c;sqlmap工具的使用 五&#xff0c;sql注入的防御方法 总结 什么是SQL注入&#xff1f; SQL注入&#xff08;…

C++|模板进阶(非类型模板参数+特化)

目录 一、非类型模板参数 二、模板特化 2.1函数模板特化 2.2类模板特化 2.2.1全特化 2.2.2偏特化 三、模板不支持分离编译 四、模板优缺点 一、非类型模板参数 在模板初阶中&#xff0c;所学习的模板的参数是类型形参&#xff0c;但其实还有非类型形参。 类型形参&am…

gcc make makefile cmake之间的关系梳理

gcc是GNU Compiler Collection&#xff08;GNU编译器套件&#xff09;&#xff0c;也可以简单认为是编译器&#xff0c;它可以编译很多编程语言&#xff08;包括C、C、Object-C、Fortran、Java等&#xff09;当你的程序只有一个源文件&#xff0c;直接用gcc命令编译它。但是当你…

系统思考—啤酒游戏

最近有不少的合作伙伴来询问我啤酒游戏这个来自于MIT&#xff08;麻省理工学院&#xff09;经典的沙盘&#xff0c;上周刚刚结束Midea旗下的一家公司市场运营部《啤酒游戏沙盘-应对动态性复杂的系统思考智慧》的课程。 参与这次沙盘体验的团队成员深刻体会到了全局思考的重要性…