如何解决增加AWS Elastic Beanstalk实例大小或增加负载均衡器是否将有助于减少随机502 Nginx错误?
我最近在我的Elastic Beanstalk应用程序中添加了cpu密集型20MB +图像解码/解析功能,并注意到有时(约10%的时间)调用该函数本身或随后对该应用程序不相关的请求导致来自Nginx的502
错误,而不是应用程序本身:
[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
错误?
解决方法
注释中的其他信息表明CPU利用率很高(80%)。这是有问题的,因为t2.small
实例是 burstable ,并且只有 1个vCPU 。因此,一旦EB实例长时间忙于处理图像,不仅会消耗所有CPU,从而使实例上的其他进程无法有效运行,还会耗尽其CPU信用,从而进一步影响其性能。
您可以尝试更改为具有2个vCPU的t2.medium,并将其设置在unlimited mode中以克服其CPU信用限制。但是由于您的任务占用大量CPU,因此最好从通用实例t2切换到计算优化的C5系列。这样,您不必担心任何CPU信用,但是显然它们花费更多。为了进行比较,t2.small
有1个CPU,时钟为2.5GHz,而c5.large
有2个CPU,时钟为3.4 GHz。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。