Jruby Runtime и кот
Мы запускаем приложение jruby/rails под tomcat и не можем сразу перейти на потокобезопасность из-за некоторых компонентов, которые мы используем. Тем временем мы планируем установить jruby.runtime.min и jruby.runtime.max, чтобы предотвратить перманентную ошибку памяти. К сожалению, это приведет к сокращению числа одновременно работающих пользователей до довольно небольшого числа, поэтому мой вопрос заключается в том, когда время выполнения перерабатывается? Это сессия или что-то еще. Поможет ли низкое время ожидания сеанса ускорить доступность пулов или есть что-то большее. Будем благодарны за любые ссылки, чтобы лучше понять особенности работы jruby runtime.
1 ответ
Во -первых, есть некоторая путаница в q - установка параметров времени выполнения min/max не предотвратит ошибки perm-gen... вам, вероятно, потребуется немного увеличить память (в зависимости от занимаемой площади вашего приложения), поскольку вы видите эти особенно если вы устанавливаете минимальные / максимальные значения выше.
во-вторых - он будет гарантировать одновременное управление дроссельной заслонкой, но не так много - думайте о нем, как о (тонком) кластере mongrel: одновременные запросы обрабатываются > = количество запущенных экземпляров
одна среда выполнения блокируется на время одного запроса (не зависит ни от какого состояния сеанса), после возврата ответа среда выполнения возвращается в пул и готова обрабатывать другие запросы. если поступает запрос и в пуле нет времени выполнения, он будет пытаться подождать, пока он не станет доступным, прежде чем вернуть ошибку HTTP (можно настроить с помощью jruby.runtime.acquire.timeout).
Я бы порекомендовал запустить или хотя бы (интеграционное) тестирование с min = max, поскольку загрузка среды выполнения по требованию может быть дорогостоящей (но опять же это зависит от приложения), и в то же время сложнее угадать требования к памяти при загрузке Rails экземпляр по запросу во время обслуживания. имейте в виду, что загрузка может занять некоторое время, так как ваше приложение требует загрузки при развертывании в минимальное время.