我们使用 ELB 进行 SSL 终止。我们的应用程序使用 HTTP 在 ELB 后面的 EC2 实例上运行。我们正在监控应用程序响应时间,并且通过 ELB 时的性能损失似乎非常高:- 通过 ELB 时的平均响应时间:1+ 秒,- 绕过 ELB 时的平均响应时间:~250 毫秒。
看起来,通过 ELB 会增加大约一秒钟的时间,有时会增加到 4-5 秒。这是预料之中的吗?ELB SSL 终止通常会增加多少开销?
任何指点都将不胜感激!
答案1
这可能是由于 ELB 的配置方式所致,这绝对不正常。ELB 节点会根据负载改变大小和规模。如果您的网站没有收到太多流量,则您的 ELB 可能已缩小到较小的节点。您应该通过 Premium Support 或 AWS 论坛联系 AWS,让他们检查一下。
答案2
对于那些有类似问题并试图弄清楚如何诊断 ELB 的人,我编写了一个名为埃尔平旨在使 ELB 诊断变得更容易一些。我专门编写了这个工具来测试所有 ELB 节点是否都在通过触发 HTTP(s) 模式下的 ELB 的 HTTP 405(方法不允许)来响应。
它以 ruby gem 的形式提供,因此如果你有 rubygems 那么你可以通过简单地执行以下操作来安装它:
$ gem install elbping
现在你可以运行:
$ elbping -c 4 https://elb-123456789.us-east-1.elb.amazonaws.com
Response from 54.243.63.96: code=405 time=210 ms
Response from 23.21.73.53: code=405 time=189 ms
Response from 54.243.63.96: code=405 time=191 ms
Response from 23.21.73.53: code=405 time=188 ms
Response from 54.243.63.96: code=405 time=190 ms
Response from 23.21.73.53: code=405 time=192 ms
Response from 54.243.63.96: code=405 time=187 ms
Response from 23.21.73.53: code=405 time=189 ms
--- 54.243.63.96 statistics ---
4 requests, 4 responses, 0% loss
min/avg/max = 187/163/210 ms
--- 23.21.73.53 statistics ---
4 requests, 4 responses, 0% loss
min/avg/max = 188/189/192 ms
--- total statistics ---
4 requests, 4 responses, 0% loss
min/avg/max = 188/189/192 ms
如果您看到,code=405
则表示 ELB 及其节点正在响应。这些“ping”永远不会到达您的后端,因此这些响应时间仅有的往返 ELB 的时间。
对于 SSL 来说,这将帮助您辨别建立与 ELB 的 SSL 连接所花费的时间以及 ELB 与后端通信所花费的时间。
高血压
答案3
刚刚遇到这个问题,将一些知识转述给它以防其他人遇到这个问题。
如今,ELB 可以已启用访问日志,它会为您提供一系列不同的请求指标,以便您判断 ELB 是否有故障,或者您的后端实例是否有故障。(请参阅 request_processing_time 和 backend_processing_time )