工人层是否始终处于CPU 100%负载?

时间:2014-10-30 10:22:17

标签: amazon-web-services amazon-ec2 elastic-beanstalk amazon-sqs

我在Elastic Beanstalk Worker Tier上运行了一个网络爬虫,我一直都在运行它。当队列为空时,它只会再次加载所有新的URL并继续运行。它从来都不是空的。

无论我设置了多少线程或进程,我的CPU负载都是100%使用微实例,我对此有点困惑,我很乐意听到一些意见。

加载SQS时,CPU是否“100%正常”?我想一旦一条消息完成,实例将继续从SQS读取消息,这意味着即使我将我的实例升级到一个小型或大型实例,它仍将是100%CPU负载,唯一不同之处在于它可以在相同的时间内完成更多的消息。正确的吗?

第二个问题是,如果有100%的CPU负载存在任何大问题?在日志中,有时我会收到Script timed out before returning headers: application.py等超时错误。我想这可能与负载过高(?)有关,如果是这样,我能否以某种方式阻止它或降低CPU负载?

2 个答案:

答案 0 :(得分:1)

对我来说,解决方案是从t1微实例转移到t2微实例。

答案 1 :(得分:-1)

当你跑到顶部时,ST值是多少?

窃取值下方的示例为0.0%

top - 13:01:16 up 161 days, 22:49,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  88 total,   1 running,  87 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1695600k total,  1585988k used,   109612k free,   345484k buffers
Swap:        0k total,        0k used,        0k free,   527696k cached

我相信它是因为您正在使用Micro实例,而您无需支付对所有底层CPU周期的访问权限。当您配置微型实例时,亚马逊不会让您访问100%的现代快速CPU;这只是他们的事情,确保你没有比你付出的更多的CPU周期。

在中型实例上试用您的应用程序,看看是否得到相同的结果。