如何使用 Elastic Beanstalk 提高 SSL 性能

Posted

技术标签:

【中文标题】如何使用 Elastic Beanstalk 提高 SSL 性能【英文标题】:How can I increase SSL performance with Elastic Beanstalk 【发布时间】:2012-07-04 02:02:03 【问题描述】:

我非常喜欢 Elastic Beanstalk,并设法在 Tomcat7 64 位容器上使用 SSL 启动并运行我的 web 应用程序(Spring MVC、Hibernate 等)。

我主要关心的是性能(我认为在这里使用 Amazon 云会有所帮助)。

为了对我的服务器性能进行基准测试,我正在使用 blitz.io(它使用亚马逊云让多个客户端同时访问我的网络服务)。

我的第一个简单性能测试已经让我想知道: 我对一个健康检查网址进行了基准测试(基本上只是打印“我没事”)。

没有 SSL:看起来不错。 13 次点击/秒,响应时间为 9 毫秒 230 次点击/秒,响应时间为 8 毫秒

使用 SSL:不太好。 13 次命中/秒,响应时间为 44 毫秒(好的,由于加密开销,这应该有点大) 30 次点击/秒,响应时间为 3.6 秒!

更高的连接给我留下了连接超时(超时 = 10 秒)。

我尝试在后台使用更大的 EC2 实例,结果基本相同。

如果我没记错的话,EC2 实例之前的负载均衡器用作 SSL 加密的端点。如何提高这种性能?

这可以用弹性豆茎完成吗?还是我需要设置自己的负载均衡器等?

我还使用 Heroku 进行了一些测试(尽管技术堆栈略有不同,play! vs. SpringMVC)。在这里,我还看到响应时间增加了,但基本保持不变。我假设他们正在使用性能相当好的 SSL 端点。我如何为 Elastic Beanstalk 获得它?

【问题讨论】:

【参考方案1】:

SSL 需要在打开安全传输通道之前进行握手。一旦握手完成,这涉及到几个往返,数据就会被传输。

当您只是使用负载测试器点击页面时,它会为每次点击进行握手。它没有重用已经建立的会话。

浏览器不会这样做。 Browse 将进行一次握手,然后在一段时间内为所有后续请求重用打开的加密会话。

所以,我不会很担心结果。我建议您尝试使用 www.browsermob.com 之类的工具来查看包含许多图像、js、css 等的完整页面需要多长时间才能通过 SSL 与非 SSL 加载。这将是一个公平的比较。

有帮助吗?

【讨论】:

这不是关于网页,而是一个本质上处理图像上传的网络服务。因此,处理许多同时发生的请求很重要,每个请求都进行一次握手。【参考方案2】:

看来我的测试方法有缺陷。

Amazon 的 Elastic Load Balancer 似乎每秒可以处理 10k SSL 请求。

查看这篇精彩的文章: http://blog.mattheworiordan.com/post/24620577877/part-2-how-elastic-are-amazon-elastic-load-balancers

【讨论】:

以上是关于如何使用 Elastic Beanstalk 提高 SSL 性能的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TFS 2017 部署到 Elastic Beanstalk?

如何使用 Terraform 为 Elastic Beanstalk 环境定义条件(每个环境)设置?

AWS Elastic Beanstalk 上的 Wordpress

如何使用 Elastic Beanstalk 设置实例类型?

如何在 AWS elastic-beanstalk 中更改我的 python 版本

如何在 elastic-beanstalk 中应用 ruby​​ 版本补丁