【发布时间】: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