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

Сервер приложений Websphere - что, на самом деле, потребуется, чтобы начать быстро?

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

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

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

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

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

4b9b3361

Ответ 1

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

Сначала вам нужно добавить следующие параметры JVM в начало сервера script:

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

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

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

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

Ответ 2

Одна из основных причин заключается в том, что у вас есть большое приложение со многими модулями, классами, манифестями, 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. Процессор - довольно быстрый, поскольку публикация и запуск в основном однопоточны, вам не нужно, чтобы многие ядра процессора 2. Память. По крайней мере, вам потребуется 512 МБ физической памяти, это зависит от размера вашего приложения, конечно. 3. Хранение - я бы определенно пошел на быстрый SSD, поскольку базовая структура eclipse - интенсивность ввода-вывода.

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

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

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

  • com.ibm.cacheLocalHost = истина
  • 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

Свойства Webcontainer:

  • com.ibm.wsspi.jsp.disableTldSearch = истина
  • com.ibm.wsspi.jsp.disableResourceInjection = истина

аргументы 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

Ответ 3

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

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

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

  • Оптимизация сервера для тестирования и разработки
  • Запустить сервер с ресурсами в рабочей области
  • Свернуть файлы приложений, скопированные на сервер

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

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

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

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

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

Ответ 4

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

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

Все, кроме WebSphere.

Ответ 5

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

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

Я нашел несколько советов по настройке для Portal на RAD 7 .

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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