我在Elastic Beanstalk Worker Tier上运行了一个网络爬虫,我一直都在运行它。当队列为空时,它只会再次加载所有新的URL并继续运行。它从来都不是空的。
无论我设置了多少线程或进程,我的CPU负载都是100%使用微实例,我对此有点困惑,我很乐意听到一些意见。
加载SQS时,CPU是否“100%正常”?我想一旦一条消息完成,实例将继续从SQS读取消息,这意味着即使我将我的实例升级到一个小型或大型实例,它仍将是100%CPU负载,唯一不同之处在于它可以在相同的时间内完成更多的消息。正确的吗?
第二个问题是,如果有100%的CPU负载存在任何大问题?在日志中,有时我会收到Script timed out before returning headers: application.py
等超时错误。我想这可能与负载过高(?)有关,如果是这样,我能否以某种方式阻止它或降低CPU负载?
答案 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周期。
在中型实例上试用您的应用程序,看看是否得到相同的结果。