Улучшение JBoss 5 медленный запуск - PullRequest
20 голосов
/ 18 декабря 2009

Мы обновились с 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 org.jboss.mx.server.MBeanServerImpl@1adc122[ 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, jbossWebMetaData=org.jboss.metadata.web.spec.Web23MetaData@1f, jbossClientMetaData=null, metaDataCompleteIsDefault=false

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

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

 -Xms128m -Xmx512m -XX:MaxPermSize=256m

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

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

Ответы [ 10 ]

8 голосов
/ 27 декабря 2009

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

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

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

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

4 голосов
/ 18 декабря 2009

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

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

3 голосов
/ 18 ноября 2010

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

 -Xms512m -Xmx512m

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

3 голосов
/ 27 января 2010

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

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

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

См. http://community.jboss.org/wiki/jboss5xtuningslimming особенно часть "Тюнинг".

1 голос
/ 24 декабря 2009

Вы можете обратиться к этой ссылке , чтобы избежать ненужного сканирования аннотаций, которое может ускорить запуск вашего сервера

0 голосов
/ 16 ноября 2012
  1. Отключить сканирование аннотаций и другие ненужные функции https://community.jboss.org/wiki/jboss5xtuningslimming

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

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

0 голосов
/ 27 декабря 2009

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

0 голосов
/ 23 декабря 2009

Я полагаю, вы запускаете в режиме отладки. Этот режим может быть в 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 снова становится быстрым.

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

0 голосов
/ 21 декабря 2009

Я использую JBoss 5.1.0 с MacBook Pro (2,26 ГГц 4 ГБ) без приложений, он запускается через 54 с

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

Я сделал новую конфигурацию на основе «по умолчанию». Dataosurce JMS указывает на базу данных Postgres вместо «Гиперзвуковой базы данных» (в базе данных памяти)

...