У меня есть веб-приложение Java, которое запускается из JAR, запускает встроенный Tomcat и использует Spring Boot.
Проблема в том, что оно работает очень медленно при работе в виртуальной гостевой системе KVM. Запускается то же приложение в том же JDK ( Java (TM) SE Runtime Environment (сборка 1.8.0_72-b15) 64-разрядная серверная виртуальная машина Java HotSpot (TM) (сборка 25.72-b15, смешанный режим
) 8 секунд на голом железе, но 40 секунд в виртуализированной системе. Обе ОС - Ubuntu 15.10 (ядро 4.2.0-27-generic). И это не только проблемы с запуском, приложение очень лениво отвечает на каждый HTTP-запрос.
I Пытался изменить настройки Java для SecureRandom, но ничего не изменилось. https://security.stackexchange.com/questions/14386/what-do-i-need-to-configure-to-make-sure-my-software-uses-dev-urandom
https: / /stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom
Но мне это не помогло. У вас есть другие рекомендации, что делать? Спасибо.
Мой виртуальный хост - это новый сервер с большим количеством ОЗУ, твердотельных накопителей ... так что я совершенно уверен, что проблем с оборудованием нет. Я также использую других виртуальных гостей KVM, и никаких проблем. Только с медленным Java-приложением.
Если ваше приложение использует SecureRandom, вам может потребоваться установить генератор случайной энтропии, например hasged
, чтобы энтропия была достаточна для начального числа.
ВМ. имеют проблемы со сбором энтропии.
Виртуальные серверы работают в эмулированной среде с очень ограниченным доступом к «реальному» оборудованию. Случайные данные, которые обычные компьютеры получают от своего оборудования, не происходят с эмулируемым виртуальным оборудованием, поэтому первичный источник энтропии просто отсутствует.
По крайней мере, ожидается, что это повысит производительность с первого раза. он используется.