gpt4 book ai didi

performance - 在 elastic beanstalk 上运行 Golang 应用程序时是否存在任何性能问题?

转载 作者:IT王子 更新时间:2023-10-29 00:46:02 25 4
gpt4 key购买 nike

我正在尝试在 go 中对一个简单的“hello world”HTTP 服务器进行基准测试。我做了 2 个测试:

  1. 使用亚马逊 ec2 - m3.medium 实例
  2. 使用 amazon elastic beanstalk - 也使用 m3.medium 单实例

在第一个设置中,我可以获得高达 18k 请求/秒。在第二个,1.6k 请求/秒。

源代码:(来自:https://golang.org/doc/articles/wiki/)

package main

import (
"fmt"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

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

如此巨大的性能差异有什么解释吗?

附言:基准工具:https://github.com/wg/wrk
此外,一件重要的事情是:Elastic beanstalk 总是添加 nginx 作为其应用程序的反向代理(对于 Go 应用程序,我无法删除它)在第一个设置中,根本没有 nginx。

最佳答案

简短的回答:你测量的不是同一件事。在您自己的实例上,您测量了 native Go Web 服务器,而在 Beanstalk 上,您测量了 Nginx 以及后面的 native Go Web 服务器。

长答案:

如果您在单实例配置中使用 AWS Elastic Beanstalk,您将收到与使用 EC2 时完全相同的实例。您不会在单实例 Beanstalk 环境前收到 Elastic Load Balancer。

如果您使用的是 Beanstalk,您将获得一个预部署的 nginx(正如您已经说过的)。Nginx 对性能有重大影响,尤其是在 m3.medium 实例的单 CPU 配置中。

您测量的性能影响绝不是由 Beanstalk 直接造成的,而是由您的部署配置造成的。为避免这种性能下降,您可以选择使用 native Go Web 服务器。


为了支持我的推理,我运行了一些测试来演示性能。以下数字是通过运行 wrk 生成的在与工作负载位于同一数据中心的 EC2 m3.medium 实例上。

我在 Beanstalk 上安装了与本地 EC2 实例相同的 Go 应用程序,并安装了与 Beanstalk 使用的配置相同的 NGINX 服务器。

./wrk http://<server>/ --duration 20s --connections 300

Beanstalk m3.medium instance DIRECT: 9230.52 Requests / sec
Beanstalk m3.medium instance NGINX: 1502.14 Requests / sec
EC2 m3.medium instance DIRECT: 13649.46 Requests / sec
EC2 m3.medium instance NGINX: 2489.78 Requests / sec

关于performance - 在 elastic beanstalk 上运行 Golang 应用程序时是否存在任何性能问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42232925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com