Я запускаю много заданий через capybara на моем Linux-сервере. Я использую драйвер poltergeist phantomjs. Через некоторое время я получаю много этих ошибок:Правильный способ закрыть capybara (with poltergeist/phantomjs)
Errno::EMFILE Too many open files - socket(2)
Я смотрел в lsof
и он выглядит как у меня есть много из них:
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')
Но вы уверены, что прекратит соединение TCP? –
Я не уверен, но это должно быть. Я призываю вас попробовать. – jonleighton
Хорошо, что это помогло, по-моему, в 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 труба рубин 19441 развёртыватель 139w FIFO 0,8 0t0 11683098 труба –