【发布时间】:2019-06-08 14:02:18
【问题描述】:
我有一个 go 服务 (http.ListenAndServe),它简单地回显“hello world”(最基本的服务,以免给基准测试带来开销)。问题是,如果我使用 go run server.go 运行服务并在我的本地机器(Macbook pro)上运行性能测试(使用 wrk https://github.com/wg/wrk),我的性能是
请求/秒:59336.07 传输/秒:8.66MiB但如果我只是在 docker (docker run -p8080:8080 periket2000/goku) 中运行服务并再次运行性能测试,我得到:
请求/秒:4743.77 传输/秒:0.69MiB这有意义吗? docker性能这么差? 我已经使用多个服务/堆栈对其进行了测试,并得到了相同的结果。
【问题讨论】:
-
Docker for mac 会比在 Linux 机器上运行 docker 慢。我不知道网络设置的细节,但它不如直接在主操作系统上运行的进程快是有道理的。将在 Linux 服务器上测试 docker 性能。开销不应该像你看到的那么大:stackoverflow.com/questions/21889053/…
-
大概你可以使用
docker run --net=host -p8080:8080 periket2000/goku进行测试,但我不确定它在 osx 上是如何工作的。 -
好的,我会在 linux 上做,让你知道这篇文章完成了。
-
如果我在 Docker for Mac 的另一个容器中运行 wrk,性能会更接近:``` wrk_1 |请求/秒:39878.21 wrk_1 | Transfer/sec: 4.87MB不管怎样,docker for mac 是一个开发工具,预计不会有生产性能。
-
你是对的。如果我在远程位置(例如aws)运行服务器并从远程机器(linux服务器----互联网----测试机器)运行测试,性能非常相似。所以,不要依赖 docker@Macbook 来测试性能。
标签: performance docker