В настоящее время я рассматриваю возможность перехода на jRuby, и я до сих пор не уверен, как все будет работать, но давайте рассмотрим эту гипотетическую ситуацию.Преимущества jruby с рельсами 4
A user 1
загружает страницу в моем приложении, которое занимает около 2.5 seconds
, и примерно 500ms
в исполнении user 2
пытается открыть другую страницу, которая принимает 1 second
для загрузки.
Если моя оценка верна, это то, что может произойти, если вы запускали его в МРТ с одним процессом:
1) User 1 waits for 2,5 seconds for his page to load
2) User 2 waits for 3 seconds for his page to load (2 seconds waiting for user 1 to complete the loading of his page, and 1 second for his page to finish rendering)
Является ли моя оценка правильно?
И скажем, если я побежал то же самое приложение под JRuby это будет происходить:
1) User 1 waits 2,5 seconds for his page to load
2) User 2 waits for 1 or more seconds but less than 3, depending how much of the memory/cpu the request from user 1 takes
ли другая моя оценка правильно? Конечно, если ваш код является потокобезопасным. Если моя оценка неверна, пожалуйста, исправьте меня, или если это правильно, мне нужно убедиться, что какая-либо конфигурация установлена на уровне приложения rails или я должен быть осторожнее о чем-то другом, кроме потокобезопасного кода?
Update:
Я только что сделал небольшое приложение JRuby СПЭ, использовали WARBLER камень, чтобы построить военный файл, и развернула войну с TOMCAT веб-сервер. Я не думаю, что моя оценка верна для JRuby, это то, что я заметил:
1) User 1 waits 2,5 seconds for his page to load
2) User 2 waits for 3 seconds
который идентичен МРТ, с точки зрения обработки запроса, не должен обрабатывать JRuby эти параллельно?
Если ваша цель состоит в обслуживании нескольких запросов асинхронно - я бы посоветовал вам посетить веб-сервер mutli-process, например [unicorn] (https://devcenter.heroku.com/articles/rails-unicorn) – Anthony
@ Anthony да, это моя цель. Смогу ли я получить то же самое с Tomcat (контейнером сервлетов Java и сервером приложений), используя вместе с jruby? –