Решение проблем
Содержание
Проблемы с памятью
PermGen space
Периодически при развертывании наших приложений на Tomcat возникают проблемы с памятью, которые как правило выражаются в появлении ошибки "PermGen space".
Для того, чтобы уменьшить вероятность появления этой ошибки, рекомендуется увеличить максимальный размер "PermGen space". Как это сделать? Все зависит от способа запуска Tomcat.
- Tomcat запускается из командной строки с помощью bat-файла. В этом случае нужно увеличить параметр Tomcat CATALINA_OPTS
- в файле catalina.bat. Т.об. он будет действовать только для Tomcat, в который Вы вносите изменения. Необходимо найти метку :doStart в этом этом файле. После этой строчки необходимо написать
set CATALINA_OPTS="-XX:MaxPermSize=512m"
либо любое другое значение выделяемой памяти.
- через механизм переменных среды Windows.
Т.об. он будет действовать для всех Tomcat, запускаемых на данной машине из командной строки.
- Имя переменной: CATALINA_OPTS
- Ее значение: -XX:MaxPermSize=512m
- Tomcat запускается как сервис.
В этом случае нужно запустить файл Tomcat7w, находящийся в папке bin инсталляции Tomcat. В появившимся окне перейти на вкладку Java и там в поле Java Options с новой строчки добавить запись: -XX:MaxPermSize=512m Важно, чтобы строка не содержала лишних пробелов в начале или в конце!
- Tomcat запускается из Eclipse. В этом случае нужно открыть представление (View) Servers, выбрать нужный Tomcat, щелкнуть по нему правой кнопкой мыши, выбрать в появившемся меню пункт Open. В открывшемся окне нужно найти ссылку Open launch Configuration. В очередном открывшемся окне нужно перейти на вкладку Arguments, где в поле VM arguments через пробел добавить строчку -XX:MaxPermSize=512m
Java heap space
Данная ошибка может происходить при открытии больших таблиц в гриде, загружаемом с помощью одной процедуры, а также при экспорте в Excel из грида вне зависимости от числа процедур.
Способ ее решения аналогичный проблеме PermGen space: нужно увеличить Heap Size для JVM.
- В случае запуска из командной строки нужно добавить в CATALINA_OPTS ключ -XmxNm, где N - размер кучи в магабайтах.
- В случае запуска из Eclipse - добавить тот же ключ в список аргументов VM сервера в Eclipse (см. на картинку выше).
- В случае запуска сервиса 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 компонент. Вот несколько примеров возникающих проблем:
- пропадают графики Showcase
- пропадают закэшированные элементы типа карта
- некорректно отображаются карты Showcase: нет возможности их двигать
- не отображается содержимое Flash компоненты
- выдаются ошибки при открытии компонент 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