0

我最近在我的 Elastic Beanstalk 应用程序中添加了一个 CPU 密集型 20MB+ 图像解码/解析函数,并注意到有时(大约 10% 的时间)调用函数本身或随后对应用程序的不相关请求会导致502错误,来自 Nginx,而不是应用程序本身:

[09/Oct/2020:01:51:06 +0000] "GET /plaid/eoinfoinwfe HTTP/1.1" 502 157 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit

我的 Elastic Beanstalk 实例是一个t2.small正在运行的Docker running on 64bit Amazon Linux 2/3.2.0操作系统,我的负载均衡器如下所示:

Listeners: 2
Load balancer type: application
Processes: 1

切换到更大的实例大小或增加负载均衡器的进程是否有助于减轻502我看到的错误?

4

1 回答 1

1

评论中的附加信息表明 CPU 利用率很高 (80%)。这是有问题的,因为t2.small实例是可突发的并且只有1 个 vCPU。因此,一旦 EB 实例长时间忙于处理图像,您不仅可能会消耗所有 CPU,导致实例上的其他进程无法高效工作,而且还可能耗尽其 CPU 积分,进一步影响其性能。

您可以尝试更改为具有 2 个 vCPU 的 t2.medium 并将其设置为无限制模式以克服其 CPU 信用限制。但是由于您的任务是 CPU 密集型的,也许最好从通用实例 t2 切换到计算优化的 C5 系列。这样您就不必担心任何 CPU 积分,但显然它们的成本更高。作为比较t2.small,有 1 个时钟频率为 2.5GHz 的 CPU,而c5.large有 2 个频率为 3.4 GHz 的 CPU。

于 2020-10-09T04:48:44.043 回答