Сколько Ruby Fibers я могу использовать на Heroku?

Я экспериментирую с «асинхронными рельсами», чтобы облегчить боль от использования медленных сторонних сервисов.

Gemfile

gem 'eventmachine'
gem 'rack-fiber_pool',  :require => 'rack/fiber_pool'
gem 'em-synchrony', :require => ['em-synchrony',
                                 'em-synchrony/em-http',
                                 'em-synchrony/activerecord']

config.ru

require ::File.expand_path('../config/environment',  __FILE__)
use Rack::FiberPool, :size => 6
run MyApp::Application

Кто-нибудь знает, сколько Ruby Fibers можно использовать в стеке Cedar Heroku? Или как определить такую ​​вещь?


person colllin    schedule 06.03.2013    source источник


Ответы (1)


Как и вы, я сейчас экспериментирую с рубином и волокнами, чтобы повысить производительность приложения. И из того, что я читал и думаю вспомнить, не должно быть почти никаких ограничений на количество волокон, которые вы можете использовать.

Я думаю помнить (пожалуйста, проверьте это сами), что каждый динамометр может использовать до 500 МБ ОЗУ. Каждое волокно добавляет несколько КБ (я думаю, 2 КБ) к использованию ОЗУ вашим приложением. Пока ваше приложение не использует все 500 МБ, у вас должно быть все в порядке даже с 1000 волокнами.

Но вы должны достичь границы производительности/конкурентности раньше, так как ваше приложение по-прежнему обрабатывает только одно волокно за раз. В вашем случае это будет зависеть от внешнего сервиса.

person namxam    schedule 09.04.2013
comment
Я уверен, что количество на самом деле не безгранично, но это отличный момент, потому что я, вероятно, перестану видеть преимущества дополнительных волокон задолго до того, как у меня закончится память. Спасибо! - person colllin; 11.04.2013