Подробное описание настроек запуска и работы службы JBOSS

 
 

Описание

Основной службой сервера приложений Set10 является служба JBOSSSVC (JBOSS_SVC -- в версии 10.2) . В диспетчере служб Windows она называется "SETv10 Application Server"

При запуске этой службы стартует процесс виртуальной машины Java, которая собственно и обеспечивает работу нашего сервера.
Если он занимает меньше 600 Мб, то либо сервер еще не поднялся, либо есть какие то ошибки в работе(запуске).

Настройка службы

Файлы настройки работы самой службы хранятся в папке SetRetail10\bin
Основным конфигурационным файлом является: 
run.bat(run.sh - в Linux)  -- для версии 10.0.1.52
standalone.conf.bat -- для версии 10.2

Структура у файлов схожая, ниже указаны те параметры, которые приходится иногда изменять:

Память выделяемая виртуальной машине JAVA

-Xms - Объем памяти используемый при старте
-Xmx - Максимальный используемый объем памяти
Максимальный объем используемой оперативной памяти. По умолчанию установлен на значениях 1280 мб.
Если сервер зависает с ошибкой Java Heap Space - необходимо увеличить объем памяти выделяемой для виртуальной машины Java.
Если служба не запускается, так как не хватает оперативной памяти, то наоборот уменьшить.

Сводная таблица ограничений

  Linux 32 Java 32 Linux 64 Java 32 Linux 64 Java 64 Windows 32 Java 32 Windows 64 Java 32 Windows 64 Java 64
 ОписаниеКонфигурация поставляется в нашем дистрибутиве CentOS 5Конфигурация у клиентов, которые используют свой Linux x64Конфигурация у клиентов, которым необходимо выделить службе больше 4 Гб памяти (Центрум с большим кол-вом касс - более 200)Конфигурация используется на серверах с низкой производительностью (ОС x32)Самая распространенная конфигурацияРекомендуемая конфигурация
Максимальный(ограничение ОС), Мб30723072Ограничивается только объемом ОЗУ сервера
 1280 1280Ограничивается только объемом ОЗУ сервера
Минимальный 768 768 768 768 768 768
Рекомендуемый объем выделяемой памяти Java Heap Space 2048 2048 2048 1024 1280 2048
 Что можно сделать с выделяемой памятью.Уменьшить
Увеличить, не более 4Гб
Уменьшить
Увеличить, не более 4Гб
Уменьшить
Увеличить
 Уменьшить Уменьшить

Уменьшить 
Увеличить
 Работает ли железный Hasp + + - + + -

Java 32 в Windows 64 использует память из адресного пространства первых 4 ГБ. Если в такой системе больше 4 ГБ оперативной памяти, и запущены другие "крупные" процессы (например sqlserver), то машина Java может не запускаться или часто падать из-за нехватки памяти.Рекомендуется ставить Java 64.

При установке 64 битной Java перестанет работать аппаратный Hasp ключ. При необходимости, его необходимо запросить через менеджеров компании CSI.

Установка 64-битной JAVA на Windows

1. Скачать дистрибутив: jdk1.6.0_45_64.zipДля 52 версии и ниже Java должна быть 6 версии
2. Установить java. (Предположение, что Java 64-bit установлена в c:\java\jdk1.6.0.45x64)
3. Изменить {instdir}\set10home\bin\run.bat, добавив перед строкой "if not "%SET_JAVA_HOME%" == "" goto ADD_TOOLS" следующую строку: set SET_JAVA_HOME=c:\java\jdk1.6.0.45x64 
4. Перезапустить службы МУКа и Сервера. Иногда требуется перезапуск системы

PermGen space

При работе виртуальной машины Java, классы приложения хранятся в специальной области памяти, которая называется permanent generation. Сделано это специально, ведь классы загружаются/выгражаются относительно редко.
Когда не хватает этой памяти, в логах будет ошибка: java.lang.OutOfMemoryError: PermGen space
В run.bat строчка о выделяемом объеме этой памяти выглядит так:
Уменьшать этот параметр никогда не приходилось. Увеличивая его необходимо учитывать что эта память добавляется к памяти выделяемой виртуальной машине
В итоге для 4Gb сервера получаем:

Часовой пояс

Иногда бывает что на сервере другое время, отличное от системного, в этом случае необходимо раскомментировать и отредактировать следующий параметр, вставив корректный часовой пояс:

Размер пула stateless-бинов

В некоторых случаях для увеличения пропускной способности можно увеличить размер пула stateless-бинов.

Данный параметр находится в файле standalone.xml
<strict-max-pool name="slsb-strict-max-pool" max-pool-size="100" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

Параметр strict max pool позволяет настроить максимально-верхний лимит для пула. Во время того, как приложение запущено и все его бины из пула находятся в использовании, и, когда приходит запрос на новый бин, пул блокирует запрос до того как новый бин не будет достпен или не истечет тайм-аут.

Настройка thread-pool

standalone.xml/server/profile/subsystem/thread-pools/thread-pool/max-threads[count="400"]

По умолчанию установлено 30, для больших объемов серверов Центрум рекомендуется занчение 400 (например до 700 магазинов на Центруме этого значения достаточно)

standalone.xml/server/profile/subsystem/thread-pools/thread-pool/keepalive-time[time="10000" unit="milliseconds"]

По умолчанию установлено 100мс, для высоких нагрузок на Центруме рекомендуется установить 10 секунд - это означает, не уничтожать поток из пула после использования в течении этого времени. 

Рекомендации по настройке коннектов сервера SetCentrum для сервера приложений JBoss к БД PostgreSQL

В зависимости от того, какое количество магазинов подключено к серверу SetCentrum, в виде серверов SetRetail или отдельных касс напрямую. Значение параметра <max-pool-size>...</max-pool-size> в файле \standalone\configuration\standalone.xml должно быть быть минимум на 100 больше к БД set, чем реальное количество магазинов подключенных к серверу SetCentrum.

Например: количество магазинов 700шт., тогда параметр 
<max-pool-size>...</max-pool-size> к БД set на сервере SetCentrum будет = 800


Логирование

Java-машина

Непосредственно логи работы Java машины можно посмотреть в SetRetail10\bin(\var\lib\jboss\bin для Linux):
run.log - создается/изменяется при старте
shutdown.log - создается/изменяется при остановке
hs_err_pid*.log - Создается при падении службы. В нем как правило можно посмотреть из-за чего упала служба.
Как правило там идет указание на память:

Логирование работы службы сервера

Основные логи работы сервера находятся:
\SetRetail10\server\set\log -- для версии 10.0.1.52
\SetRetail10\standalone\log -- для версии 10.2
Ключевые логи о работе сервера:
boot.log - загрузка службы сервера
server.log - общий лог работы сервера

Файл с настройками уровня логирования:
\SetRetail10\server\set\conf\jboss-log4j.xml -- для версии 10.0.1.52
\SetRetail10\standalone\configuration\standalone.xml -- для версии 10.2 
Для его редактирования удобнее всего использовать программ Notepad++. 

Настройка аппендера


Настройка логгера

 Иногда для поиска проблем уровень логирование во всех логах выставляется по максимуму. Необходимо понимать что слабые сервера могут тормозить, у них может закончиться место на диске, поэтому необходимо восстанавливать после решения проблем значения логгеров в «error», что бы избежать новых проблем.
 

Уровни логирования

    • ERROR – Ошибки
    • WARN - Предупреждения или информация о событиях близких к ошибкам
    • INFO - События выполнения
    • DEBUG - Детальная информация
    • TRACE-Детальная информация, подробнее DEBUG
    • ALL-Вся информация, по сути аналогична TRACE
Подробнее про логирование можно прочитать в Настройка логирования сервера приложений.