Приложение Java работает медленно на виртуальном сервере (KVM)

У меня есть веб-приложение 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-приложением.

2
задан 23 May 2017 в 15:41
1 ответ

Если ваше приложение использует SecureRandom, вам может потребоваться установить генератор случайной энтропии, например hasged , чтобы энтропия была достаточна для начального числа.

ВМ. имеют проблемы со сбором энтропии.

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

Источник

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

3
ответ дан 3 December 2019 в 10:38

Теги

Похожие вопросы