Подтвердить что ты не робот

Улучшение медленного запуска JBoss 5

Мы обновили JBoss 4 (и JDK 5) до JBoss 5 (и JDK 6). Проблема в том, что начальное время прошло с 1,5 минут (на JBoss 4) до более 4 минут.

18:53:35,444 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221053)] Started in 3m:9s:262ms

Похоже, что компонент, который забирает JBoss, является самым длинным для инициализации, - это JMX

18:50:41,926 INFO  [LogNotificationListener] Adding notification listener for logging mbean "jboss.system:service=Logging,type=Log4jService" to server [email protected][ defaultDomain='jboss' ]
18:52:38,797 INFO  [JMXConnectorServerService] JMX Connector server: service:jmx:rmi://lharel2/jndi/rmi://lharel2:1090/jmxconnector

Из журнала сервера DEBUG я получаю эти строки в проблемное время:

2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) vfsfile:/C:/QC/Views/QCDev/jboss-5.1.0.GA/server/default/deploy/jmx-console.war/ endpoint mappings:
2009-12-18 18:51:00,886 DEBUG [org.jboss.deployment.MappedReferenceMetaDataResolverDeployer] (main) Processing unit=jmx-console.war, structure: jmx-console.war
2009-12-18 18:52:35,209 DEBUG [org.jboss.deployment.OptAnnotationMetaDataDeployer] (main) Deployment is metadata-complete, skipping annotation processing, ejbJarMetaData=null, [email protected], jbossClientMetaData=null, metaDataCompleteIsDefault=false

В проекте нет EJB.

Настройки памяти:

 -Xms128m -Xmx512m -XX:MaxPermSize=256m

Вы знаете, как можно улучшить время запуска JBoss?

Обновление: пока не повезло, я попробовал предложение shreeni (изменил сканирование xmls). Сервер не работает в режиме отладки, поэтому предложение MicSim не имеет значения

4b9b3361

Ответ 1

Выстрел в голубое небо без дополнительной информации

  • Тайм-ауты сети: 1,5 минуты задержки при развертывании jmx-console.war может указывать на сетевой тайм-аут (например, 3 х 30 секунд). Попробуйте запустить JBoss и привязать его к определенному IP-адресу с помощью аргумента командной строки -b или системного свойства jboss.bind.address. Кроме того, постарайтесь убедиться, что параметры вашего хоста и DNS-разрешения в вашей системе верны.

  • JMX также использует RMI, и вы можете установить имя хоста сервера RMI как системное свойство. В некоторых дистрибутивах Linux у RMI возникают проблемы с поиском правильного имени хоста и jmx-console.war может попытаться подключиться к "неправильному локальному хосту". Системное свойство java.rmi.server.hostname

  • Трассировка системы: Если это не помогает, вы можете использовать strace для запуска процесса Java, чтобы вы могли видеть точку, в которой зависает система (если она действительно зависает из-за сетевого тайм-аута или подобного).

Ответ 2

Это ужасно большой пробел в журналах. Я предлагаю изменить конфигурацию журнала, чтобы регистрировать все на уровне DEBUG, а не INFO. Это создаст намного больше записей журнала, но, надеюсь, поможет вам сузить его.

Самый простой способ сделать это - установить системное свойство -Djboss.server.log.threshold=DEBUG при запуске JBoss

Ответ 3

Ваше подозрение в jmx-console может ввести в заблуждение. В фоновом режиме могут быть другие компоненты, не связанные с jmx-консолью. По моему опыту, у нас была проблема, когда у небольшого военного файла было 3 минуты на загрузку! Это было невинно. Преступник отчасти был вызван файлом EAR со многими войнами и банками.

Пока я не эксперт, я бы предложил следующее:

  • Попробуйте включить ведение журнала в TRACE. Делая это, я стал свидетелем того, как один из разработчиков (EJBDeployer, я думаю) без необходимости просматривал WAR в одном из наших EAR. Затем я вручную отключил проверку этих файлов WAR.
  • Запуск проводов в процессе запуска. Я обнаружил, что некоторые военные файлы висят, ожидая ответа от внешнего запроса DTD. Эти веб-сайты либо в настоящее время не существуют, либо не будут надлежащим образом обслуживать файлы DTD для Java-программ. Я мог бы ускорить это, либо программисты используют локальные файлы DTD, либо локально локализуют эти DTD, и локально выполняются петли /etc/host.

Ответ 4

У меня возникла такая проблема, но я нашел хорошее улучшение, установив размер начальной и максимальной кучи на те же значения, я имею в виду:

 -Xms512m -Xmx512m

При этом я улучшил время от 4 до 2 минут.

Ответ 7

Я использую JBoss 5.1.0 с Macbook pro (2.26ghz 4gb) без приложений, которые начинаются с 54s

15:00:26,449 INFO  [ServerImpl] JBoss (Microcontainer) [5.1.0.GA (build: SVNTag=JBoss_5_1_0_GA date=200905221634)] Started in 54s:720ms

Я создал новую конфигурацию, основанную на "default". Данные JMS dataosurce указывают на базу данных Postgres вместо "Hypersonic Database" (в базе данных)

Ответ 8

Я предполагаю, что вы начинаете в режиме отладки. Этот режим может быть в 3 раза медленнее обычного режима. Но также может возникнуть проблема при переключении с JDK5 на JDK6. Я нашел это решение здесь в сети:

Я решил это. Это проблема отладки. Я изменил настройки отладки:

wrapper.java.additional.26=-Xdebug
wrapper.java.additional.27=-Xnoagent
wrapper.java.additional.28=-Djava.compiler=NONE
wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n

в

wrapper.java.additional.26=-Xdebug
wrapper.java.additional.27=-Xrunjdwp:transport=dt_socket,address=7199,server=y,suspend=n

и JBoss снова становится быстрым.

Надеюсь, что это поможет.

Ответ 9

Вам нужно консольное приложение JMX? Прагматичным было бы развернуть его с сервера, вы все равно могли бы использовать jconsole или jvisualvm в основном для одной и той же вещи.

Ответ 10

  • Отключите сканирование аннотаций и другие функции, которые вам не нужны https://community.jboss.org/wiki/jboss5xtuningslimming

  • Когда вы запускаете/останавливаете JBoss от затмения, он не корректно очищает tmp и рабочие папки. Настройте конфигурацию внешнего инструмента и запустите пакетный файл, чтобы удалить все в tmp и рабочих папках перед каждым запуском.

Мне удалось ускорить запуск профиля по умолчанию от 15/20 минут до 5 минут.