【问题标题】:How to run a load test with ApacheBench如何使用 ApacheBench 运行负载测试
【发布时间】:2016-07-27 17:59:24
【问题描述】:

请问,假设我想测试 Node 和 Go 的 HTTP 功能,我该如何使用 ApacheBench 进行负载测试?注意:我已经安装了AB,只是不知道怎么运行测试。

节点:

  var http = require("http");
  http.createServer(function(request,response) {
  response.writeHeader(200);
  response.write("You requested " + request.url);
  response.end();
}).listen(8080);

去:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "You requested %s", r.URL.Path)
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

【问题讨论】:

  • 使用比ab更好的东西? wrk, httpperf, boom, siege, weighttp, vegeta 浮现在脑海中。我更喜欢wrk,并且一直在尝试vegeta,因为它具有恒定的请求率(也有一个 wrk fork 可以做到这一点)
  • @JimB ab 怎么了?
  • 首先,只有 http/1.0(默认不执行 keepalive)在分块编码方面存在问题,并且性能不如其他许多。您设计的 Go 服务器的响应速度比 ab 可以测试的要快,所以您要测试的只是 ab
  • 自己运行,wrk 报告响应时间在 200us 范围内,ab 报告它们在 70ms 范围内。这是 2 个数量级的错误,您甚至还没有处理请求 rate 的问题。

标签: node.js go benchmarking apachebench


【解决方案1】:

你做 ab -n [请求数] -c [并发请求数] [url]:[端口]

ab -n 100 -c 10 http://localhost:8080/

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-03-10
    • 2012-07-03
    • 1970-01-01
    相关资源
    最近更新 更多