2013-04-23 54 views
0

我在我的linux服務器上運行通過水豚很多工作。我使用的是poltergeist phantomjs驅動程序。 A之後,而我得到了很多這樣的錯誤:關閉水豚的正確方法(與poltergeist/phantomjs)

Errno::EMFILE Too many open files - socket(2) 

我看了lsof,它看起來像我有這些的LOT:

ruby  32316 deployer 320u  IPv4 9893211  0t0  TCP localhost:55062 (LISTEN) 

現在,我懷疑它可能是因爲我沒有正確關閉連接?

什麼是運行像下面後終止的正確方法:

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, {:js_errors => false}) 
end 

Capybara.current_driver = :poltergeist 
Capybara.javascript_driver = :poltergeist 
Capybara.run_server = false 

@session = Capybara::Session.new(:poltergeist) 
@session.visit('some_url') 

回答

5

您可以運行@session.driver.quit

+0

但你確定會終止TCP連接嗎? – 2013-04-23 13:07:07

+0

我不確定,但它應該。我鼓勵你去嘗試。 – jonleighton 2013-04-23 13:25:00

+0

好吧,它幫助,我認爲,在TCP連接,但我仍然得到錯誤,但現在我看到'lsof'中的很多這些:ruby 19441 deployer 137w REG 9,3 1895691531 57021609/home/deployer/apps/autouncle/shared/log/sidekiq.log ruby​​ 19441 deployer 138r FIFO 0,8 0t0 11683098 pipe ruby​​ 19441 deployer 139w FIFO 0,8 0t0 11683098 pipe' – 2013-04-25 13:09:40