Улучшение медленного запуска 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 не имеет значения
Ответы
Ответ 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 минут.
Ответ 5
Вы можете ссылаться на эту ссылку чтобы избежать ненужного сканирования аннотаций, которое могло бы ускорить запуск вашего сервера
Ответ 6
Смотрите http://community.jboss.org/wiki/jboss5xtuningslimming, особенно часть "Настройка".
Ответ 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 минут.