【问题标题】:T2.micro running python scraper - uncontrolable CPUT2.micro 运行 python scraper - 无法控制的 CPU
【发布时间】:2017-06-12 22:04:00
【问题描述】:

我在运行 Ubuntu 的 t2.micro EC2 实例上安装了一个网络 scraperscraper 是用 Python 编写的,它使用 Selenium 和 PhantomJS。它获取的数据被发送到一个单独的 RDS 实例。 我设置了一个 cronjob 以每 15 分钟运行一次脚本,它确实如此。 这是我的问题:

脚本运行良好(红色框),突然之间,它被过度使用,我的实例变得非常慢。 我的脚本从运行几秒钟到 10 分钟不运行。
在这些突增期间,实例使用 CPU 积分。但是,我的 CPU 积分一直在上升。我发现重启实例可以解决问题。
知道发生了什么吗?

【问题讨论】:

  • 我在 IEdriver 实例 (stackoverflow.com/questions/41679405/…) 上遇到了同样的问题,目前还没有找到解决方案,只有重启实例有帮助。 ://
  • 如果 CPU 超过正常值 10 分钟,我已设置自动重启以解决问题,但我宁愿不必重启它...
  • 显然,在运行脚本后关闭 PhantomJS 并不会关闭 phantomjs 进程。更糟糕的是,每次脚本开始运行时它都会创建一个新的。
  • 只需在脚本末尾添加killall phantomjs
  • 您是否观察到使用tophtop 发生了什么?请注意,只要您的 CPU 积分余额不接近零,问题就出在您正在运行的代码上,而不是实例的行为... t2 不会减速,直到您的积分几乎耗尽。

标签: python selenium amazon-web-services amazon-ec2 phantomjs


【解决方案1】:

我也遇到过同样的问题,当我升级到 t2.medium 时,python 脚本运行得更快。如果你使用 python 我会推荐使用psutil

for proc in psutil.process_iter():
    if proc.name() == 'phantomjs':
        proc.kill()

把它放在代码的末尾,浏览器有时会吸走你所有的内存并减慢脚本的速度,尤其是当你在循环中运行 selenium 时。

【讨论】:

    猜你喜欢
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 2016-12-26
    • 2015-06-27
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多