Я рассматриваю возможность перехода на Torquebox, но мне нужно установить хороший уровень одного из внешних демонов, которые я хочу изменить на службу, до 19. Есть ли эквивалентный способ сделать это в Torquebox, чтобы служба имеет более низкий приоритет времени выполнения, чем что-либо еще, особенно «веб-часть» Torquebox?Услуги Torquebox: приятность?
ответ
Услуги - это только ПОРО, соответствующие API TorqueBox, с которыми можно работать. TorqueBox ожидает, что вы вернете его поток как можно скорее после звонка Service#start
, поэтому услуги обычно запускаются в рамках отдельных рабочих потоков, и вы можете установить приоритет рабочего потока с помощью Thread#priority
(см. https://github.com/jruby/jruby/wiki/DifferencesBetweenMriAndJruby#thread-priority), что соответствует эквиваленту Thread
nice
Должно быть так же просто, как:
class Service
def start
@worker = Thread.new do
# do servicy stuff
end
@worker.priority = ...
end
def stop
@worker.stop
end
end
Однако, Java, кажется, страдает некоторые причуды по этому поводу, которые зависимые от ОС (см Setting priority to Java's threads и Throttling CPU from within Java) и JRuby наследует эти причуды.
Имея эти причуды в виду, если все остальное терпит неудачу, вы всегда можете делать сон 0.01 каждый раз, чтобы немного пошатнуть выполнение и получить процессорное время для других заданий, вы можете сделать это детерминистически (sleep 0.01 if count%100==0
), или вы можете сделать это не детерминистически для почти такого же эффекта и более простого кода (sleep 0.01 if random(100)==0
) - и играть с точным числом (1, 10, 100, 1000, ...),
Насколько я могу судить, EventMachine использует sleep 0.01 в потоке реактора, чтобы предотвратить привязку CPU, этот подход не так диковинтен, как кажется на первый взгляд.
- 1. Torquebox Jruby Rails Deploy
- 2. Torquebox - проект не обновляется
- 3. Torquebox не загружается с Oracle
- 4. Развертывание TorqueBox не соблюдает контекст?
- 5. Настройка Torquebox на Ubuntu MaxPermSize
- 6. Настройка приложений Apache для Rails в Torquebox
- 7. JRuby/TorqueBox для высокопроизводительного/критически важного приложения
- 8. Развертывание Torquebox приложение на EC2 с Capistrano
- 9. Неисправность с запуском TorqueBox на Ubuntu Quantal
- 10. Использование Torquebox для отправки сообщений в браузере
- 11. Услуги Ткань дизайн трубопроводов Надежные услуги
- 12. Потребляющие услуги, которые потребляют другие услуги
- 13. Symfony2: услуги по внедрению в не-услуги
- 14. Как услуги Lagom потребляют другие услуги?
- 15. Плата за услуги IOS за услуги
- 16. Devstack Услуги
- 17. Услуги Singleton
- 18. Угловые услуги
- 19. Услуги Symfony
- 20. Инъекционные услуги
- 21. Услуги Android
- 22. Услуги Symfony2
- 23. Коммунальные услуги?
- 24. Назначение услуги
- 25. Услуги Angular.js
- 26. Услуги Android
- 27. Аутентификационные услуги
- 28. Услуги Android
- 29. Обработка изображений переднего или заднего плана в Rails (Jruby, Torquebox)
- 30. Внедрение Torquebox (2.3) в существующий JBoss (7.1.x)
выглядит как linux java, не позволяет вам понижать приоритет в потоке, если вы не являетесь пользователем root .... это довольно чертовски смешно. –
не уверен, что это сработает, но для кого-либо еще, читающего это, вы можете попробовать: http://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workaround.html –