【问题标题】:Limit memory usage of phantomjs using selenium webdriver?使用 selenium webdriver 限制 phantomjs 的内存使用?
【发布时间】:2013-05-17 00:22:26
【问题描述】:

我正在使用phantomjs --webdriver 8910 在远程 WebDriver 模式下运行 phantomjs,然后使用 Selenium python 绑定获取许多页面,例如:

wd = webdriver.PhantomJS(port=8910)
for url in big_url_list:
    wd.get(url)
    # do something here, e.g. wd.save_screenshot or print wd.page_source
    wd.quit()

wd.quit() 似乎什么也没做。用top监控进程可以看出,随着检索到的页面越来越多,phantomjs进程的内存使用量不断增加。如果我重新启动 phantomjs 进程,那么内存使用率会下降并再次开始稳定攀升。

close method mentioned in the phantomjs docs 听起来很有希望,但我看不出有任何方法可以通过 WebDriver protocol 调用它。

是否有 (i) 一种方法可以在发出许多请求时降低 phantomjs 的内存使用率,或者 (ii) 一种可靠的方法来监控并定期重新启动 phantomjs 进程以使内存永远不会失控?

【问题讨论】:

    标签: python selenium-webdriver phantomjs


    【解决方案1】:

    This SO question 建议使用release,它已被close 弃用。好像python webdriver APIexposes the close method

    【讨论】:

      【解决方案2】:

      仅当您关闭 WebDriver 会话时,Ghostdriver 才会调用 PhantomJS 网页关闭方法。 当达到内存限制时,您可以尝试使用 runit 重新启动 PhantomJS。创建bash脚本如下:

      #!/bin/sh
      exec 2>&1
      exec chpst -u your_user -m 104857600 /usr/bin/phantomjs --webdriver=8910
      

      -m 标志将内存限制设置为 100MB。

      将上面的脚本放在某个名为“run”的空目录下:

       |
       `-phantomjs-runit-+
                         `-run
      

      现在你可以启动 phantomjs

      sv start ./phantomjs-runit/
      

      【讨论】:

        猜你喜欢
        • 2016-06-10
        • 1970-01-01
        • 2016-12-05
        • 2014-07-31
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        • 2014-04-17
        相关资源
        最近更新 更多