0

我正在使用 Vegeta 进行压力测试,但在生成 json 报告时遇到了一些问题。运行以下命令,我可以看到文本结果:

vegeta 攻击 -targets="./vegeta_sagemaker_True.txt" -rate=10 -duration=2s | vegeta 报告 -output="attack.json" -type=text

Requests      [total, rate]            20, 10.52
Duration      [total, attack, wait]    2.403464884s, 1.901136s, 502.328884ms
Latencies     [mean, 50, 95, 99, max]  945.385864ms, 984.768025ms, 1.368113304s, 1.424427549s, 1.424427549s
Bytes In      [total, mean]            5919, 295.95
Bytes Out     [total, mean]            7104, 355.20
Success       [ratio]                  95.00%
Status Codes  [code:count]             200:19  400:1  
Error Set:
400 

当我运行将 -type-text 更改为 -type=json 的相同命令时,我收到了非常奇怪的数字广告,它们对我没有意义:

{
  "latencies": {
    "total": 19853536952,
    "mean": 992676847,
    "50th": 972074984,
    "95th": 1438787021,
    "99th": 1636579198,
    "max": 1636579198
  },
  "bytes_in": {
    "total": 5919,
    "mean": 295.95
  },
  "bytes_out": {
    "total": 7104,
    "mean": 355.2
  },
  "earliest": "2019-04-24T14:32:23.099072+02:00",
  "latest": "2019-04-24T14:32:25.00025+02:00",
  "end": "2019-04-24T14:32:25.761337546+02:00",
  "duration": 1901178000,
  "wait": 761087546,
  "requests": 20,
  "rate": 10.519793517492838,
  "success": 0.95,
  "status_codes": {
    "200": 19,
    "400": 1
  },
  "errors": [
    "400 "
  ]
}

有谁知道为什么会发生这种情况?

谢谢!

4

1 回答 1

2

这些数字是纳秒——Go 中的内部表示time.Duration

例如,latencies.meanJSON 中的 是992676847,表示 992676847 纳秒,即 992676847/1000/1000 = 992.676847ms。

实际上,在 vegeta 中,如果您声明typetext( -type=text),它将使用NewTextReporter,并将其打印time.Duration为用户友好的字符串。如果您声明typejson( -type=json),它将使用NewJSONReporter并返回time.Duration的内部表示:

Duration 将两个瞬间之间的经过时间表示为 int64 纳秒计数。该表示将最大可表示持续时间限制为大约 290 年。

于 2019-04-25T08:59:44.173 回答