jvm-sandbox-repeater學習筆記 1


安裝

git clone https://github.com/alibaba/jvm-sandbox-repeater.git
cd jvm-sandbox-repeater/bin
./bootstrap.sh

執行完成后應該會在用戶根目錄cd ~生成一個 sandbox 目錄,並且會啟動一個 SpringBoot (Demo)應用(啟動失敗也無所謂,直接用自己的Java應用更方便)

也可以直接執行curl -s http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/install-repeater.sh | sh
僅安裝 sandbox,不部署 Demo 應用

配置

模板

{
  "degrade": false,
  "exceptionThreshold": 1000,
  "httpEntrancePatterns": [
    "^/regress/.*$"
  ],
  "javaEntranceBehaviors": [
    {
      "classPattern": "com.alibaba.repeater.console.service.impl.RegressServiceImpl",
      "includeSubClasses": false,
      "methodPatterns": [
        "getRegress"
      ]
    }
  ],
  "javaSubInvokeBehaviors": [
    {
      "classPattern": "com.alibaba.repeater.console.service.impl.RegressServiceImpl",
      "includeSubClasses": false,
      "methodPatterns": [
        "getRegressInner"
      ]
    },
    {
      "classPattern": "com.alibaba.repeater.console.service.impl.RegressServiceImpl",
      "includeSubClasses": false,
      "methodPatterns": [
        "findPartner"
      ]
    },
    {
      "classPattern": "com.alibaba.repeater.console.service.impl.RegressServiceImpl",
      "includeSubClasses": false,
      "methodPatterns": [
        "slogan"
      ]
    }
  ],
  "pluginIdentities": [
    "http",
    "java-entrance",
    "java-subInvoke",
    "mybatis",
    "ibatis",
    "dubbo-provider",
    "dubbo-consumer"
  ],
  "repeatIdentities": [
    "java",
    "http"
  ],
  "sampleRate": 10000,
  "useTtl": true
}

說明

配置項 釋義
useTtl 是否開啟ttl線程上下文切換,開啟之后,才能將並發線程中發生的子調用記錄下來,否則無法錄制到並發子線程的子調用信息
degrade 是否執行錄制降級策略,開啟之后,不進行錄制,只處理回放請求
exceptionThreshold 異常發生閾值;默認1000
sampleRate 采樣率;最小力度萬分之一;默認值:10000
pluginsPath 插件地址
httpEntrancePatterns 由於HTTP接口的量太大(前后端未分離的情況可能還有靜態資源)因此必須走白名單匹配模式才錄制
javaEntranceBehaviors java入口插件動態增強的行為
javaSubInvokeBehaviors java子調用插件動態增強的行為
pluginIdentities 需要啟動的插件
repeatIdentities 回放器插件

示例

該配置實現了對/perf路徑下接口的錄制;
mock了JPA中的兩個mongo查詢方法;
cat ~/.sandbox-module/cfg/repeater-config.json

{
  "degrade": false,
  "exceptionThreshold": 1000,
  "httpEntrancePatterns": [
    "^/perf/.*$"
  ],
  "javaEntranceBehaviors": [
    {
      "classPattern": "com.test.moudle.perf.service.PerfReportService",
      "includeSubClasses": true,
      "methodPatterns": [
        "getReportDetail"
      ]
    }
  ],
  "javaSubInvokeBehaviors": [
    {
      "classPattern": "com.test.moudle.perf.repository.PerfReportBaseRepository",
      "includeSubClasses": true,
      "methodPatterns": [
        "findAllByReportId"
      ]
    },
    {
      "classPattern": "com.test.moudle.perf.repository.PerfReportRepository",
      "includeSubClasses": true,
      "methodPatterns": [
        "findById"
      ]
    }
  ],
  "pluginIdentities": [
    "http",
    "java-entrance",
    "java-subInvoke"
  ],
  "repeatIdentities": [
    "java",
    "http"
  ],
  "sampleRate": 10000,
  "useTtl": true
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM