Публичное пространство
SetRetail10 ◾️ Конфигурация и масштабирование системных настроек SetCentrum/SetRetail после установки
Производить настройки рекомендуется опытными пользователями или системными администраторами.
- 1 Базовая конфигурация сервера Set10 и Postgres после установки
- 2 Как определить необходимость повышения лимитов памяти для Wildfly
- 3 Оптимизация настроек памяти для Wildfly
- 4 Баланс коннектов от Wildfly к PostgresSQL
- 4.1 Основная документация
- 4.2 Куда обращать внимание
- 4.3 Последовательность шагов
- 4.3.1 1. Параметр <max-pool-size>...</max-pool-size> в standalone.xml
- 4.3.2 2. Параметр http max-connections в standalone.xml
- 4.3.3 3. Параметр max_connections в postgresql.conf
- 4.3.4 4. Параметр max_prepared_transactions в postgresql.conf
- 4.3.5 5. Параметр effective_cache_size в postgresql.conf
- 4.3.6 5. Параметр maintenance_work_mem в postgresql.conf
- 5 Полная оптимизация настроек Postgres
- 6 Настройка лимитов в Linux (Centos, Ubuntu)
Базовая конфигурация сервера Set10 и Postgres после установки
Настройте сервер Set10 и СУБД Postgres согласно сайзингу:
SetRetail10 ◾️ Минимальные системные требования к серверу магазина
Основные рекомендации по конфигурации сервера WildFly и PostgreSQL. Сайзинг
Подробное описание конфигурации внутренних системных настроек сервера СУБД PostgreSQL
Если после настройки наблюдаются проблемы, необходимо выполнить диагностику по данной статье.
Как определить необходимость повышения лимитов памяти для Wildfly
Общие симптомы
GUI сервера Set10 по порту 8090 отвечает нестабильно.
Транспортный сервлет по адресу в веб-браузере http://ip_адрес_сервера:8090/SetXRMI/TransportServlet отвечает нестабильно.
В логе server.log есть ошибки вида:
Java Heap Space
;Could not open connection
;Unable to get managed connection
;No managed connections available
;Could not invoke service method
;Network error
в браузере.
Определение потребления памяти Wildfly на Linux
Подключитесь к веб-консоли Wildfly по адресу
http://IP_адрес_сервера_Set10:9990/
Логин и пароль необходимо уточнить в техподдержке CSI
Перейдите по адресу Runtime → Server → Status
На экране Status видно реальное потребление выделенной Heap-памяти и Non-Heap. На данном примере сервер потребляет 1068 MB из 1984 MB выделено всего на Heap-память и 410 MB из 2280 MB всего на Non-Heap память. Итого сервер использует фактически 1068 + 410 = 1478 MB места в памяти.
Если значение
Used
для Heap и Non-Heap близко к максимальному, значит, почти вся возможная выделенная память для работы приложения занята и может понадобиться увеличение значений-Xms
и-Xmx
в/var/lib/jboss/bin/standalone.conf
(Linux) или%SET10_HOME%\bin\standalone.conf.bat
(Windows).Параметр для настройки выделения памяти серверу Wildfly
JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx2048M -XX:MaxMetaspaceSize=1024m"
Для определения, сколько памяти можно выделить дополнительно для сервера Wildfly, необходимо вычислить доступное место в памяти в операционной системе. Для этого подключитесь к серверу по SSH с помощью клиента PuTTy или SetConsole.
Проверьте общее потребление процессом сервера Wildfly в системе (вывод в килобайтах):
ps aux | fgrep '[Standalone]' | grep -v grep | awk '{print $6}'
В данном случае это 2,02 ГБ:
Для проверки общего количества RAM на сервере и её занятость запустите инструмент htop и нажмите M для сортировки по памяти:
10. Дополнительно проверьте RAM с помощью команды free -m
.
Идеальное значение - SWAP должен быть свободен.
total
- общий объём памяти;used
- занятый объём;free
- свободное место в памяти.
Выводы
Сравните значение реального потребление Heap-памяти сервера Wildfly c максимально выделенным в параметре
-Xms
и-Xmx
в standalone.confЕсли значение близко к максимальному, может потребоваться увеличение лимита потребляемой памяти в /var/lib/jboss/bin/standalone.conf
Сравните доступное количество оперативной памяти в операционной системе и необходимой для сервера Wildfly.
Если свободного места в памяти недостаточно для максимального значения параметра
-Xmx
, рекомендуется добавление RAM на сервер.
Если сервер Postgres установлен на данном сервере, необходимо всегда держать 1/4 оперативной памяти свободной для обеспечения работы СУБД.
Если свободного места в памяти нет, рекомендуется проверить, чем оно занято кроме процесса Wildfly:
Проверить через утилиты
htop
илиtop
.Отсортировать процессы по потреблению памяти, значение в мегабайтах
ps aux | sort -n -k 6
.
Определение потребления памяти Wildfly в ОС Windows
Подключение к веб-консоли сервера Wildfly аналогично как в Linux по адресу
http://IP_адрес_сервера_Set10:9990/
Проверьте общее потребление процессом Wildfly в системе (вывод в килобайтах). Максимальное значение, это и есть Wildfly:
tasklist | findstr java.exe
Выводы
Сравните значение реального потребление Heap-памяти сервера Wildfly c максимально выделенным в параметре
-Xms
и-Xmx
в standalone.conf.batЕсли значение близко к максимальному, может потребоваться увеличение лимита потребляемой памяти в {DISK}:\ПАПКА_УСТАНОВКИ_SETRETAIL\bin\standalone.conf.bat
Сравните доступное количество оперативной памяти в операционной системе и необходимой для сервера Wildfly.
Если свободного места в памяти недостаточно для максимального значения параметра
-Xmx
, рекомендуется добавление RAM на сервер.
Если сервер Postgres установлен на данном сервере, необходимо всегда дополнительно обеспечить 1/4 оперативной памяти свободной для обеспечения работы СУБД.
Если свободного места в памяти нет, рекомендуется проверить, чем оно занято кроме процесса Wildfly:
Диспетчер задач Windows
Вкладка Подробности;
Вкладка Производительность - внизу окна ссылка Открыть монитор ресурсов → вкладка Память.
Оптимизация настроек памяти для Wildfly
Основная документация
Подробное описание настроек запуска и работы службы WildFly
Куда обращать внимание
Windows: {DISK}\Папка_установки_SetRetail10\bin\standalone.conf.bat;
Linux: /var/lib/jboss/bin/standalone.conf.
Пример оптимизации
В файле standalone.conf найдите строку
JAVA_OPTS="$JAVA_OPTS -Xms2048M -Xmx2048M -XX:MaxMetaspaceSize=1024m"
Установите значение параметра Xms/Xmx согласно сайзингу SetRetail10 ◾️ Минимальные системные требования к серверу магазина
В данном случае для Heap Java (Xms/Xmx) выделено 2ГБ + 1ГБ (MaxMetaspaceSize). Итого: 3 ГБ.
Предельный общий размер памяти, занимаемый Wildfly, может быть больше установленных ограничений примерно на 1/4, так как в JVM есть другие модули, которые потребляют память, но не требуют прописанных ограничений (сборщик мусора, кэши и т.д.)
Рекомендуемый размер выделяемой памяти для Wildfly (Xms/Xmx) не более 2/3 от имеющейся RAM, без учёта SWAP, и при условии, что сервер PostgreSQL и дополнительные модули (SetKit, SetAgent) установлены на отдельном сервере.
Рассчитывать объём памяти нужно исходя из фактически свободного места в RAM при запуске всех установленных сервисов.
Баланс коннектов от Wildfly к PostgresSQL
Основная документация
Основные рекомендации по конфигурации сервера WildFly и PostgreSQL. Сайзинг
Оптимизация коннектов к базе данных на SetCentrum
Куда обращать внимание
Windows: {DISK}\Папка_установки_SetRetail10\standalone\configuration\standalone.xml.
Linux: /var/lib/jboss/standalone/configuration/standalone.xml.
PostgresSQL:
Windows: {DISK}\Папка_установки_PostgreSQL\15\data\postgresql.conf.
Linux:
/etc/postgresql/15/main/postgresql.conf.
Команда для поиска
ps fax | grep postgresql | grep -v grep
.
Последовательность шагов
1. Параметр <max-pool-size>...</max-pool-size> в standalone.xml
Основная нагрузка по коннектам идёт на базу данных set, для неё нужно выделить ~3/4 от общего пула коннектов, остальные распределить к базам данных set_operday и set_loyal.
Рекомендуемое количество коннектов можно определить, опираясь на сайзинг из официальной документации PostgreSQL или Wildfly согласно топологии.
Пример настроенных коннектов на высоконагруженном сервере (более 10-ти тысяч касс на одном сервере SetCentrum):
set → <max-pool-size>4000</max-pool-size>
:
set_loyal → <max-pool-size>150</max-pool-size>
:
set_operday → <max-pool-size>400</max-pool-size>
:
2. Параметр http max-connections в standalone.xml
Проверьте текущее потребление коннектов к Wilfdly, можно командой:
Windows:
netstat -n | find /c /i ":8090"
Linux:
netstat -n -p | grep :8090 | wc -l
Например, при значении для баз данных в параметре
<max-pool-size>...</max-pool-size>
(set = 2000) + (set_loyal = 150) + (set_operday = 400) установите значение 2295 (минус 10%). В этом случае понизьте значение на 10-20% ниже общей суммы коннектов max-pool-size.
3. Параметр max_connections в postgresql.conf
Значение должно быть равно общему пулу коннектов max-pool-size
+ 20 (на служебные коннекты).
В данном примере, это значение (set = 2000) + (set_loyal = 150) + (set_operday = 400) +20 = 2570.
4. Параметр max_prepared_transactions в postgresql.conf
Повысьте 90% до 100% от значения max_connections
в postgresql.conf.
5. Параметр effective_cache_size в postgresql.conf
Размер кэша, хранимого на диске, установить не менее 8000MB.
5. Параметр maintenance_work_mem в postgresql.conf
Должен быть не меньше 64MB. Допускаются значения: 1GB или 2GB.
Полная оптимизация настроек Postgres
Основная документация
Подробное описание конфигурации внутренних системных настроек сервера СУБД PostgreSQL
Описание параметров
Подробное описание сайзинга под разные торговые сети смотрите в основной статье, указанной выше.
max_connection
- общий пул коннектов, которые может принять СУБД, включая запросы от Wildfly, Zabbix, живых пользователей, например, через pgAdmin или другие источники.shared_buffers
- рекомендуется установить 25-30% от свободной оперативной памяти (например, при 16GB всего, нормальное значение этого параметра 4GB).work_mem
- рекомендуемые значения 16MB - 48MB для высоконагруженных серверов. Учитывать, что каждый коннект из пулаmax_connection
занимает значениеwork_mem
, то есть 2000 коннектов по 16MB при одновременном использовании занимают 32GB RAM (должен быть запас в RAM по максимальному значению).
Настройка лимитов в Linux (Centos, Ubuntu)
Для ОС Windows дополнительные настройки лимитов не требуются.
Пример в документации
На что обратить внимание
лимиты открытых приложением файловых дескрипторов;
лимиты системных файловых дескрипторов;
лимиты количества запущенных процессов.
Что проверить?
Системные лимиты количества процессов для Wildfly
Проверки для повышения лимита
Проверьте текущие системные лимиты для процесса jboss (настройка max user processes по умолчанию 4096):
su -c "ulimit -a" jboss | grep 'max user processes'
Проверить текущее количество открытых процессов (для Wildfly)
Если полученное значение подходит близко к max user processes
, тогда увеличьте его до рекомендуемого 16384.
su jboss
ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
Выполните команду
sudo mcedit /etc/security/limits.conf
→ добавьте строку ниже после# End of file
→ сделайте клавишей ENTER новую строку после добавленной → перезапустите службу сервера приложений (sudo service JBOSS_SVC restart
)
jboss - nproc 50000
Проверка существующих ограничений максимального количества открытых файлов
Выполните команду для процессов Java (команда требует повышение привилегий через sudo или root):
sudo su
for pid in `pidof java`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done
Проверьте разницу между значениями
Max open files
иCurrently open files
:
Например: Max open files
= 4096, Currently open files
= 3875.
Если пределы по одному из процессов подходят к лимиту, тогда настройте их.
Откройте Midnight Commander командой
sudo mc
→ откройте на редактирование файл в зависимости от названия продукта /etc/systemd/system/название_продукта.service.
В блок
[Service]
добавьте параметрLimitNOFILE=32768
(пример конфигурационного файла МУК SCM_SVC):
Перезапустите службу продукта:
sudo systemctl daemon-reload
sudo systemctl restart название_сервиса
© 1994-2025, ООО «Кристалл Сервис Интеграция».
Все права защищены..