Мы обновили от 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
От журнала сервера ОТЛАДКИ я получаю эти строки в проблематичное время:
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 может быть улучшено?
Обновление: до сих пор никакая удача, я попробовал предложение shreeni (изменил сканирование xmls). Сервер не работает в режиме отладки, таким образом, предложение MicSim не релевантно
Выстрел в синее небо без дополнительной информации
Таймауты сети: 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
System trace: Если это не помогает, вы можете использовать strace
для запуска java-процесса, чтобы увидеть точку, в которой система зависает (если она действительно зависает из-за таймаута сети или что-то в этом роде).
Это ужасно большой пробел в журналах. Я предлагаю изменить конфигурацию журнала, чтобы записывать все на уровне DEBUG, а не INFO. Это создаст намного больше записей в журнале, но, надеюсь, поможет вам сузить круг вопросов.
Самый простой способ сделать это - установить системное свойство -Djboss.server.log.threshold = DEBUG
при запуске JBoss
Я использую 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
Я сделал новую конфигурацию на основе «по умолчанию». Источник данных JMS указывает на базу данных Postgres вместо «Гиперзвуковой базы данных» (в базе данных памяти)
Я полагаю, вы запускаете режим отладки. Этот режим может быть в 3 раза медленнее обычного. Но также может возникнуть проблема при переходе с JDK5 на JDK6. Я нашел это решение здесь в сети:
Я решил это. Это проблема отладки. Я изменил свои настройки отладки с:
wrapper.java.additional.26 = -Xdebug wrapper.java.additional.27 = -Xnoagent wrapper.java.additional.28 = -Djava.compiler = НЕТ 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 снова становится быстрым.
Надеюсь, это поможет.
Нужно ли консольное приложение JMX? Прагматично было бы распаковать его с сервера, для этого все равно можно было бы использовать jconsole или jvisualvm.
.Вы можете обратиться к этой ссылке , чтобы избежать ненужного сканирования примечаний, которое может ускорить запуск вашего сервера
.Ваше подозрение на JMX-консоли можно вводить в заблуждение. Могут быть другие компоненты, выполняющие работу на заднем плане, не связанном с jmx-консолью. По моему опыту у нас возникла проблема, на которой появился небольшой военный файл, чтобы занять 3 минуты! Это было невинно. Винприт был частично из-за файла уха со многими войнами и банками.
В то время как я не эксперт, я бы предположил следующее: