zoukankan      html  css  js  c++  java
  • 如何向AcmeAir注入问题代码

    为什么要注入问题代码?

    AcmeAir的常规代码是为了压测测试准备的,所以绝大部分的操作都是可以在几十毫秒中就可以正常返回的。为了向用户展示我们APM工具可以在源代码级别发现系统潜在问题,我们需要在AcmeAir中动态注入问题代码。 当某些请求满足了问题代码的触发条件的适合,问题代码就会被运行起来。

    问题代码是如何被触发起来的?

    AcmeAir WebApp是一个常规的Web应用,我们可以通过设置Filter的方式监控所有的Rest API的情况,通过分析Request中的头信息来动态决定是否触发问题代码。

    目前支持的问题有 CPU问题,内存问题,还有慢事务问题。

    问题类型
    header name
    header value
    CPU issue-header cpu-issue
    Memory issue-header memory-issue
    SlowTransaction issue-header slow-transaction-issue

    如果要触发这些问题, 我们只需要在对应的HTTP请求头中设置对应的header信息即可

    1.以crul 为例

    这里可以触发cpu-issue,slow-transaction-issue这两个issues

    curl --header "issue-header: cpu-issue,slow-transaction-issue" www.google.com

    2.以jmeter为例

    这里可以触发slow-transaction-issue,当然还可以在别的请求处添加相同或不同的issue

    sleepTime代表缓慢事务延迟时间(秒)

    3. 触发memory leak,header设置如下

          issue-header : memory-issue

          leakType : staticSet/database (staticSet静态集合引起、database数据库连接相关对象引起)

          leakSpeed : verySlow//slow/normal/fast (泄露时间分别约3h/1h/15min/5min引起OOM  ,有不同程度误差)

    例如:下图配置表示以数据库连接相关对象引起的慢内存泄露,至OOM大约1个小时

    4. 通过前端页面触发问题

    为了方便快速、直观地注入问题,我们发布了前端界面触发问题的版本,只要pull最新镜像即可使用。使用方式如下参考:

    (可以根据需求,参考推荐配置做调整):

    4.1.slow transaction用于制造缓慢请求

       每个请求时延5秒,表示请求响应时间5秒左右

    4.2.error response用于制造报错信息

      返回的是500错误

    4.3.memeroy use内存使用情况

    配置:每秒1个请求,持续1000秒(根据实验长度自行设置),每个请求时延15秒,每个请求占用30M内存,会造成memroy/heap/used在250左右,
    完成后可以,停止请求,使用 jcmd $pid GC.run命令进行强制内存回送,迅速减低内存。

    4.4. use cpu使用情况

    配置:每秒1000个请求,持续150秒,每个请求做10000000单位次运算,会造成CPU使用率 在 8%左右

    4.5. 触发慢sql

    每个请求的sql查询7秒左右

    4.6.触发timeout sql

    每个请求查询sql的事务 timeout ,导致返回500

    如何添加新的问题代码?

    在AcmeAir common 模块中有一个com.acmeair.problems包,其中包含了CPU问题,内存问题以及慢事务问题的注入代码。

    如果要添加新的问题代码,需要继承ProblemInterceptorSupport类,实现了ProblemInterceptor接口,并通过分析 HttpRequest Header中的issue-header 决定是否执行问题代码。

  • 相关阅读:
    通用数据权限的思考与设计
    MyBatis传入参数为list、数组、map写法
    MyBatis的foreach查询(List、Array、Map)
    heX——基于 HTML5 和 Node.JS 开发桌面应用
    优秀设计:12个带给你灵感的创意单页网站作品
    So Easy!让开发人员更轻松的工具和资源
    触摸手势图标大全:48款触摸手势图标免费下载
    放松的周末,一起欣赏15个华丽的艺术品
    Skytte:一款令人印象深刻的 HTML5 射击游戏
    分享本年度最佳的15个 Photoshop 实例教程
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5997228.html
Copyright © 2011-2022 走看看