首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在弹性豆柄上运行Golang应用程序时是否存在性能问题?

在弹性豆柄上运行Golang应用程序时是否存在性能问题?
EN

Stack Overflow用户
提问于 2017-02-14 17:50:07
回答 1查看 806关注 0票数 4

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

  1. 使用AmazonM3.media实例
  2. 使用amazon弹性豆杆--也有m3.中单实例

在第一次设置时,我可以达到18k雷克/秒。第二,1.6k雷克/秒。

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

代码语言:javascript
复制
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)
}

有什么原因可以解释这么大的性能差异吗?

PS:基准工具:https://github.com/wg/wrk

另外,重要的是:弹性豆柄总是添加nginx作为它的应用程序的反向代理(对于Go应用程序,我无法删除它),在第一个设置中,根本没有nginx。

EN

回答 1

Stack Overflow用户

发布于 2017-02-14 21:30:08

简单的回答是:你测量的不是同一件事。在您自己的实例中,您测量的是本机Go Web服务器,而在Bean秸秆上,您测量的是Nginx,后面是本机Go Web服务器。

长话短说:

如果在单个实例配置中使用AWSElasticBean秸秆,则接收的实例与使用EC2的实例完全相同。您不会在单个实例Bean秸秆环境面前接收一个弹性负载均衡器。

如果您正在使用Bean秸秆,您将得到一个预部署的nginx (正如您已经说过的)。Nginx对性能有很大的影响,特别是在单个CPU配置中,就像m3.media实例一样。

您所测量的性能影响绝不是由Bean秸秆直接造成的,而是由您的部署配置造成的。为了避免性能下降,您可以选择使用本机Go Web服务器。

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

我在Bean秸秆上安装了与本机EC2实例相同的Go应用程序,并且安装了一个NGINX服务器,其配置与Bean秸秆使用的配置相同。

代码语言:javascript
复制
./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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42232925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档