Решение проблем

Материал из Course Orchestra
Перейти к: навигация, поиск

Проблемы с памятью

PermGen space

Периодически при развертывании наших приложений на Tomcat возникают проблемы с памятью, которые как правило выражаются в появлении ошибки "PermGen space".

Для того, чтобы уменьшить вероятность появления этой ошибки, рекомендуется увеличить максимальный размер "PermGen space". Как это сделать? Все зависит от способа запуска Tomcat.


  1. Tomcat запускается из командной строки с помощью bat-файла. В этом случае нужно увеличить параметр Tomcat CATALINA_OPTS
    1. в файле catalina.bat. Т.об. он будет действовать только для Tomcat, в который Вы вносите изменения. Необходимо найти метку :doStart в этом этом файле. После этой строчки необходимо написать
set CATALINA_OPTS="-XX:MaxPermSize=512m"

либо любое другое значение выделяемой памяти.

    1. через механизм переменных среды Windows.

Т.об. он будет действовать для всех Tomcat, запускаемых на данной машине из командной строки.

      • Имя переменной: CATALINA_OPTS
      • Ее значение: -XX:MaxPermSize=512m


Envpathsetup.jpg


  1. Tomcat запускается как сервис.

В этом случае нужно запустить файл Tomcat7w, находящийся в папке bin инсталляции Tomcat. В появившимся окне перейти на вкладку Java и там в поле Java Options с новой строчки добавить запись: -XX:MaxPermSize=512m Важно, чтобы строка не содержала лишних пробелов в начале или в конце!

Tomcatservice.jpg

  1. Tomcat запускается из Eclipse. В этом случае нужно открыть представление (View) Servers, выбрать нужный Tomcat, щелкнуть по нему правой кнопкой мыши, выбрать в появившемся меню пункт Open. В открывшемся окне нужно найти ссылку Open launch Configuration. В очередном открывшемся окне нужно перейти на вкладку Arguments, где в поле VM arguments через пробел добавить строчку -XX:MaxPermSize=512m

Tomcateclipse.jpg

Java heap space

Данная ошибка может происходить при открытии больших таблиц в гриде, загружаемом с помощью одной процедуры, а также при экспорте в Excel из грида вне зависимости от числа процедур.

Способ ее решения аналогичный проблеме PermGen space: нужно увеличить Heap Size для JVM.

  1. В случае запуска из командной строки нужно добавить в CATALINA_OPTS ключ -XmxNm, где N - размер кучи в магабайтах.
  2. В случае запуска из Eclipse - добавить тот же ключ в список аргументов VM сервера в Eclipse (см. на картинку выше).
  3. В случае запуска сервиса Tomcat - ввести число мегабайт в специальное поле - Maximum Memory Pool (см. на картинку выше).

Для начала можно установить значение 1200 (мегабайт). Если не поможет - увеличивать и проверять - не исчезла ли ошибка. При увеличении следует иметь в виду размер свободной оперативной памяти на компьютере.

Проблемы с IE

IE 8

Текущая версия Showcase (на август 2011) создана с использованием GWT 2.3.0, который поддерживает работу в IE версий 6-9. Режим работы GWT кода Showcase определяется режимом документа IE (не режимом браузера).

Проверить текущий режим работы можно в консоли "Средства разработчика" (вызывается по клавише F12). Рекомендуется выставлять для режима браузера и режима документа значение IE8.

Showcase:режимы ie.jpg?1024x768

IE 9

В данный момент полноценной поддержки IE 9 в Showcase нет. Это связано с тем, что используемая нами компонента для формирования XForms не поддерживает IE9, что требует запуска Showcase в режиме в IE9 в режиме документа IE8. В таком режиме возникают проблемы в GWT и ExtJS коде, а также в работе FLash компонент. Вот несколько примеров возникающих проблем:

  1. пропадают графики Showcase
  2. пропадают закэшированные элементы типа карта
  3. некорректно отображаются карты Showcase: нет возможности их двигать
  4. не отображается содержимое Flash компоненты
  5. выдаются ошибки при открытии компонент ExtJS

Отладка с помощью JMX

О технологии JMX можно почитать [1] или в википедии на английском.

Для начала настроим порт для мониторинга Tomcat через JMX. Для portable Tomcat (он же папочный Tomcat) файл catalina.bat в каталоге bin рекомендуется изменить следующим образом: найти в нем блоки :doStart и :doRun и сразу после них добавить строку

set "CATALINA_OPTS=-Dcom.sun.management.jmxremote.port=XXXX -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

где XXXX - отладочный порт, должен быть уникален для каждого экземпляра Tomcat. //Именно поэтому не рекомендуется установка данных параметров с помощью переменной среды CATALINA_OPTS.//

Далее запускаем jvisualvm в каталоге bin JDK, жмём кнопку "Add JMX Connection" в меню File и указываем localhost:XXXX (XXXX - порт, указаный в catalina.bat). После чего в левом дереве должен появится новый элемент - localhost:XXXX. Щелкаем на него дважды и система начинает мониторить состояние виртуальной машины и строить наглядные графики.

Showcase:jvisualvm.jpg?700x450


В случае запуска Tomcat как сервиса указанные строчки нужно добавить в список параметров виртуальный машины таким же образом, как и в случае настройки PermGen Space (см. выше). !!!! Не забывая при этом о правиле: один параметр - одна строчка, нет лишним пробелам! Указанные строчки должны быть последними.

В случае запуска из Eclipse настройка также аналогична установке PermGen Space.

Компиляция GWT ограниченного количества пермутаций для Sencha GXT

Необходимо добавить в файл App.gwt.xml параметр

<set-property name="gxt.user.agent" value="chrome"/>,

чтобы компилировалась только одна пермутация для chrome