2009-07-24 1 views
21

Я использую Rational Application Developer v7.0, который поставляется со встроенной тестовой средой. Когда я получаю отладку моего webapp, время запуска сервера в режиме отладки близко к 5-6 минутам - достаточно времени, чтобы сделать перерыв на кофе!WebSphere Application Server - Что, на самом деле, потребуется, чтобы начать быстро?

Временами это так меня разозлило, что я начал проклинать IBM для создания операционной системы вместо сервера приложений! Истерирование 20+ процессов и бесполезных сервисов без какой-либо документированной конфигурации для его настройки, чтобы начать все быстрее.

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

У меня нет веб-сервисов, нет бранд-серверов, нет очередей, простое веб-приложение, которое требует пула соединений. Вы уже что-то сделали в прошлом, чтобы создать интегрированную тестовую среду, начать быстро в режиме отладки и там, потребляя меньше оперативной памяти?

UPDATE: Я попытался отключить несколько сервисов (интернационализация, приложения по умолчанию и т. Д.), И теперь сервер WebSphere перешел от плохого к худшему. Это не только ужасное время запуска, но и время от времени замораживается на срок до 2 минут. :-(Похоже, что оптимизация не такая уж хорошая вещь, всегда!

+1

Вы имеете в виду, что вы запускаете сервер в среде IDE в режиме отладки или запускаете сервер в режиме удаленного отладки? –

+0

, начиная с IDE в режиме отладки – Jay

+0

Сколько времени займет запуск в обычном режиме? – Jesse

ответ

8

Лучший способ отладки кода сервера - используйте удалённую отладку.

Прежде всего вам нужно добавить следующие параметры JVM в сценарий запуска сервера:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 

Это приведет к тому, что JVM прослушивает указанный порт, а затем из вашей IDE вы можете запустить удаленный отладочный сеанс с этого порта и отлаживать, как если бы код работал в том же процессе.

Работа таким образом не позволяет перезапустить сервер так часто и, следовательно, устраняет проблему с запуском Websphere.

Вы можете получить некоторые нечетные результаты, если двоичные файлы на сервере и источник в среде IDE не синхронизированы, но в целом это не проблема.

+1

Как сохранить источник в среде IDE в синхронизации с удаленным отладчиком? – Jay

+0

Привет, Джей, просто передислоцируйте, когда вы вносите изменения в свой источник. Это может показаться очевидным, но если вы делаете TDD, вы иногда забываете (ну, я это делаю), чтобы развернуть и найти трассировку через комментарии или пробелы в среде IDE. –

+0

Вы должны установить плагин для администрирования вашего WebSphere Application Server из Eclipse IDE. Для моего WAS 7.0 он называется «WebSphere Application Server 7.0 Tools». Затем вы можете добавить свой сервер в представление «Серверы» и запустить его оттуда. Вы также найдете «Начать в режиме отладки», поэтому вам не нужно самостоятельно устанавливать аргументы запуска VM. –

1

Если пул соединений действительно является единственной функцией приложения-сервера, которую вы используете, то почему бы вам просто не использовать apache commons dbcp (http://commons.apache.org/dbcp/) drop webfear alltogether и Вместо этого вы должны сократить время запуска до 5 секунд. Затем вы можете легко переключиться на websphere снова для своей производственной среды, если вам действительно нужно.

+0

есть несколько сервисов, которые я бы хотел использовать - например, JAAS. Я не уверен, смогу ли я сделать это на пристани. И это просто безопасная ставка - вы спасаете себя от проблем, связанных с миграцией. – Jay

4

Там в некоторые подсказки и советы по настройке RAD 6 on developerworks, которые могут помочь, многие из них также применяются для RAD 7.

Я видел аналогичный список для RAD 7, я выложу его, если я могу найти его.

Я нашел tuning tips for Portal on RAD 7.

Я бы сказал, что мой опыт работы с тестовой средой был субоптимальным. Теперь я склонен использовать Tomcat/Pluto, настроенный для remote debugging with an External launch configuration, чтобы управлять им из голого Eclipse и полагаться на соответствующие JNDI-конфигурации для абстрактного базового сервера.

Если вы кодируете соответствующие API-интерфейсы, для разработки не должно иметь значения, что вы не находитесь в Websphere.Если у вас есть специфическая проблема с Webpshere, вы всегда можете запустить ее, чтобы отладить ее.

+0

+1 это выглядит многообещающе –

5

От 5 до 6 минут не является нормальным. Я использую RAD и WAS каждый день и получаю приличное время запуска. Какая версия WAS вы работаете и сколько у вас RAM?

Если вы используете несколько рабочих пространств и проектов для одного и того же профиля WAS, подумайте о создании нового профиля WAS для вашего рабочего пространства.

Возможно, вы пробовали это, но вот простой контрольный список вещей, чтобы попробовать из первых рук. Убедитесь, что параметры сервера в РАУ позволило следующие опции:

  • Оптимизировать сервер для тестирования и разработки
  • Run-сервер с ресурсами на рабочем
  • Минимизировать файлы приложения копируются на сервер

Снимите флажок «Включить универсальный тестовый клиент», если он вам не нужен.

В консоли администратора вы можете проверить некоторые настройки сервера, такие как

  • Запуск в режиме разработки
  • Параллельный старт
  • компонентов Начало по мере необходимости

Вы также можете удалить IVT приложение, которое устанавливается по умолчанию при создании нового профиля WAS. Тогда обычные вещи, такие как диск, который не слишком фрагментирован, и размер файла подкачки, который правильно установлен.

И последнее, что вы, вероятно, уже знаете, переиздает на ваш сервер вместо перезапуска.

3

Если у вас нет EJB, нет JMS и т. Д., Просто развертывайте под автономным контейнером сервлетов, например Tomcat или Jetty, вы будете удивлены, насколько быстро это :-), иронично здесь, но это правда!

5

Вот почему родилась Весна.

Вам даже не нужно давать все тонкости, такие как JMS, удаленный доступ и т. Д. Вам будет лучше с Tomcat, ActiveMQ и OpenEJB.

Все, что угодно, но WebSphere.

1

WAS V7 устраняет некоторые из этих проблем, позволяя настроить то, что запускается при запуске сервера приложений.

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

+3

Неужели вы могли бы объяснить, где это настроено и что можно отключить, о котором вы знаете? – branchgabriel

7

Одна из основных причин заключается в том, что у вас есть большое приложение со многими модулями, классами, манифестями, XML-дескрипторами и так далее, и тот факт, что процесс запуска сервера приложений Websphere является одиночным потоком как таковой (таким образом, каждое приложение может быть начинаются в отдельном потоке, если они имеют одинаковый вес). Еще одна причина заключается в том, что Eclipse EMF и JST-системы очень интенсивно работают в режиме ввода-вывода во время запуска и публикации/развертывания.

Еще одна причина для утомительного запуска - это сканирование аннотаций, которое будет происходить во время публикации/развертывания.Это сканирование аннотаций можно контролировать и изменять различными способами. Посмотрите на этот сайт: http://wasdynacache.blogspot.se/2012/05/how-to-speed-up-annotation-processing.html

Прежде всего, изучите и оцените свое оборудование, как процессор, память, так и жесткий диск. Ваш процессор работает 100% в течение длительного времени во время запуска? Если это так, процессор может быть слишком слабым. Происходит ли пейджинг? то вам, возможно, придется добавить еще одну оперативную память. Рамки Websphere/eclipse JST и EMF очень интенсивные I/O, поэтому вам стоит подумать о том, чтобы инвестировать в SSD-диск. Вы также должны убедиться, что другие процессы на вашем компьютере (программное обеспечение для защиты от вирусов и т. Д.) Не украшают аппаратные ресурсы из Java-процессов Websphere.

Так для оборудования: 1. Процессор - довольно быстрый один, так как публиковать и запуск в основном singlethreaded вам не нужно, что многие ядра центрального процессора 2. Память - вы по крайней мере необходимости 512Mb физической памяти , это зависит от размера вашего приложения, конечно. 3. Хранение - я бы определенно пошел на быстрый SSD, поскольку базовая структура затмения - интенсивность ввода-вывода.

Вот некоторые трюки, чтобы уменьшить след фазы запуска. Перед применением этих настроек убедитесь, что вы запустили базовый запуск, чтобы вы могли наблюдать разницу в запуске, т. Е. Уменьшенное время запуска.

  1. JVM арг: -Xverify: нет -Xquickstart -Xnoclassgc -XX: + UseNUMA -XtlhPrefetch -Xgcthreads4 (я получил 4 виртуальных процессоров, установленных на моей машине)
  2. увеличить размер кучи, чтобы соответствовать требованиям вашего заявление.
  3. Отключите автозапуск приложения, чтобы сократить время публикации.
  4. Отключить PMI и ненужную трассировку.
  5. Профиль вашего приложения во время запуска и устранения узких мест, если они найдены.

Другие аргументы виртуальной машины Java, которые могут прирост производительности:

  • com.ibm.cacheLocalHost = TRUE
  • com.ibm.ws.classloader.zipFileCacheSize = 512
  • com.ibm.ws. classloader.resourceRequestCacheSize = 1024
  • com.ibm.ws.management.event.pull_notification_timeout = 20000
  • com.ibm.ws.amm.scan.context.filter.packages = истина
  • org.eclipse.jst.j2ee.commonarchivecore.disableZip = истинные

Jvm аргументы, которые сделают сервер приложений Websphere немедленно прекратить:

  • com.ibm.ejs.sm.server .quiesceTimeout = 0
  • свойства com.ibm.ejs.sm.server.quiesceInactiveRequestTime = 1000

контейнер сервлетов:

  • com.ibm.wsspi.jsp.disableTldSearch = истинный
  • com.ibm.wsspi.jsp.disableResourceInjection = TRUE

JVM аргументы, которые могут быть указаны eclipse.ini (Обратите внимание, что параметры кучи настраивается в соответствии с условиями окружающей среды моей)

  • -Dcom.ibm.ws.management.event .max_polling_interval = 5000
  • -Xquickstart
  • -Xverify: нет
  • -Xmxcl25000
  • -Xjit: dataTotal = 65536
  • -Xcodecache64m
  • -Xscmx48m
  • -Xnolinenumbers
  • -Xverify: нет
  • -Xmnx64m
  • -Xmx1446m
  • -Xmnx64m
  • -XX: + UseCompressedOops
  • -XX : + UseNUMA

 Смежные вопросы

  • Нет связанных вопросов^_^