我最近在带有免费层的AWS Elastic Beanstalk上托管了一个API,我插入了600万行。但是我似乎无法始终如一地获取数据(通常一次获取大约200k)。有时我可以拿到大约100k,通常会出现错误:
SyntaxError:http://***********.us-east-2.elasticbeanstalk.com/上的JSON输入意外结束
或:
SyntaxError:意外令牌
这意味着它正在获取HTML字符串。我插入了一个伪造的行并尝试获取它,并且我能够始终如一地获取它。
我认为免费套餐还不够吗?
AWS免费套餐仅是账单折扣。它不影响服务。
但是,t2.micro
的使用确实会影响网络带宽和CPU使用率。请参阅:Burstable Performance Instances - Amazon EC2
您将需要检查产生错误的代码来确定正在发生的事情。例如,由于在这样小的实例上网络带宽有限,可能无法下载所有数据。
如果您愿意花几分钱,您可以临时增加实例的大小(例如t2.large
或m5.large
),看看它是否可以改善情况。
您可以使用一些基本的监视工具来检查实例是否达到极限并面临任何资源紧缩。这里要注意的一件事是您的实例可能会占用带宽并受您的EBS容量限制。
还要检查EBS卷的性能指标。
监视后,您可以尝试修改实例的大小,因为AWS可以灵活地修改实例的大小和系列。