6.2.Рекомендации по настройке СУФД (ядро 7.0). Портал
Следует выполнить переход с c3p0 на BoneCP, для чего в sufd-db.properties необходимо поменять настройки:
#sufd.data-source-type = c3p0
sufd.data-source-type = bone
sufd.data-source.bone.partitionCount = значение настройки sufd.data-source.c3p0.maxPoolSize разделить на sufd.data-source.bone.maxConnectionsPerPartition
sufd.data-source.bone.minConnectionsPerPartition = 5
sufd.data-source.bone.maxConnectionsPerPartition = 100
sufd.data-source.bone.acquireIncrement = 5
sufd.data-source.bone.releaseHelperThreads = 15
sufd.data-source.bone.connectionTestStatement = SELECT SYSDATE FROM DUAL
sufd.data-source.bone.connectionHookClassName = com.otr.sufd.core.datasource.BoneCPConnectionHook
sufd.data-source.bone.closeConnectionWatch = false
sufd.data-source.bone.statementsCacheSize = 0
sufd.hibernate.cache.use_query_cache = false
sufd.data-source.bone.idleMaxAgeInMinutes = 60
Данные рекомендации применяются при падении производительности, возникновения очередей, а также в целях улучшения работы портала, роста производительности, вовлечения свободных ресурсов в работу портала.
6.2.1.Падение производительности СУФД-портала
Рост и падение производительности СУФД-портала зависят в основном от значений параметров, указанных в 3 файлах конфигурации:
linux.sh – объем используемой ОП;
transport.xml – транспортные потоки;
sufd-db.properties – пул, количество сессий к БД.
Значения параметров зависят от ресурсов сервера приложений, в частности объема оперативной памяти (ОП).
Далее более подробно рассматриваются конфигурационные файлы и параметры, установленные согласно следующим условиям.
linux.sh (объем используемой ОП)
В нем находится Java-директива, согласно которой СУФД использует тот или иной объем, в зависимости от указанных значений Xmx и Xms, где Xmx – максимальный объем, а Xms – минимальный.
Для расчета значений необходимо узнать объем памяти, установленный на сервере приложений (например, командой free в консоли). После чего, необходимо оставить 5-10 Гб под нужды ОС (операционной системы), а все остальное будет предназначаться СУФД. К примеру, объем памяти составляет 70 Гб. В таком случае открывается Linux.sh и в Java-директиве прописываются следующие значения:
GC_SETTINGS="-Xmx60g -Xms30g -XX:MaxPermSize=1g -XX:+UseParallelGC -XX:+UseParallelOldGC"
При стабильной работе портала (в течение всего месяца) можно довести максимальный объем ОП (-Xmx) до 65 Гб, минимальный объем ОП (-Xms) до 35 Гб.
Необходимо учесть, что при «агрессивных» хипах вида -XX:+AggressiveHeap, -XX:+AggressiveOpts расход памяти возрастет. В таком случае их лучше убрать.
Также расход памяти зависит от количества транспортных потоков и объема пула. Чем меньше количество данных величин, тем больше свободной памяти.
transport.xml (транспортные потоки)
При установке транспортных потоков нужно понимать, что установка слишком малого количества потоков скажется на росте очереди документов на обработку, а установка слишком большого количества потоков повышает расход ресурсов сервера приложений, т.е. потоки заберут большую часть ресурсов, что скажется на падении производительности, либо приведет к зависаниям и остановке работы СУФД.
Выставляя количество потоков для транспорта, необходимо учитывать количество пакетов и документов, проходящих через комплекс. Необходимо вычислять по формуле, например, для входящих пакетов:
3 = 1+(<�среднее количество пакетов в час>//720),
где 720 – количество запусков в час для крон выражения 0/5 * * * * ?,
вычисляется так – 60/5*60
sufd-db.properties (пул)
Рекомендуемый пул для СУФД-Портала – bone.
Важно:
Если при использовании пула bone будет замечен быстрый рост табличного пространства TEMP, то необходимо в файле sufd-db.properties прописать строку:
sufd.data-source.bone.idleMaxAgeInMinutes=60
Однако, возможно использование пула c3p0.
Для активизации соответствующего пула необходимо его раскомментировать, закомментировав при этом другой. Т.е. активный пул всегда один. Большое значение имеет максимальный размер. Количество соединений с БД должно быть таким, чтобы их хватало для обслуживания работы транспорта, клиентов, автопроцедур и прочее, плюс запас для пиковых нагрузок.
Максимальный размер пула bone рассчитывается путем умножения partitionCount на maxConnectionsPerPartition, соответственно минимальный на minConnectionsPerPartition. К примеру:
sufd.data-source.bone.partitionCount = 3
sufd.data-source.bone.minConnectionsPerPartition = 5
sufd.data-source.bone.maxConnectionsPerPartition = 100
sufd.data-source.bone.statementsCacheSize = 0
sufd.data-source.bone.releaseHelperThreads = 15
Размер пула будет равен минимум 15, максимум 300 соединений с БД.
Максимальный и минимальный размеры пула c3p0 устанавливаются, в виде значений:
sufd.data-source.c3p0.maxPoolSize = 700
sufd.data-source.c3p0.minPoolSize = 50
В случае с c3p0 большое значение имеет параметр:
sufd.data-source.c3p0.maxStatementsPerConnection = 90
Не рекомендуется устанавливать его значение более 100. Большой размер пула может нагружать БД. Это может выражаться в зависании Портала, увеличения времени загрузки, поэтому нужно уменьшить пул на 20-30% и посмотреть: уйдут ли признаки высокой нагрузки – если уйдут, данное значение оставить.
Необходимо понимать, что у каждого региона свои условия работы СУФД, т.е. определенное количество клиентов, документов, серверов и т.д.
Ниже даны приблизительные параметры настройки параметров конфигурации в зависимости от объема используемой ОП сервера приложений.
6.2.2.Конфигурация: ОЗУ 70 Гб
В Java-директиве необходимо прописать следующие значения:
linux.sh
GC_SETTINGS="-Xmx60g -Xms30g -XX:MaxPermSize=1g -XX:+UseParallelGC -XX:+UseParallelOldGC"
При стабильной работе портала (в течении полного месяца) можно довести максимальный объем ОП (-Xmx) до 65 Гб, минимальный объем ОП (-Xms) до 35 Гб.
transport.xml
Установить значения:
200
1000
5000
0/1 * * * * ? (во всех местах)
0/1 * * * * ? (во всех местах)
В блоке «documentQueue/lowPriority» установить, как было на 5.4, но не ниже:
10
10
В блоке «documentQueue/normalPriority» установить, как было на 5.4, но не ниже:
15
15
В блоке «documentQueue/highPriority» установить, как было на 5.4, но не ниже:
5
5
30
30
1
В блоке «packetQueue/lowPriority» установить, как было на 5.4, но не ниже:
2
4
В блоке «packetQueue/normalPriority» установить, как было на 5.4, но не ниже:
2
8
В блоке «packetQueue/highPriority» установить, как было на 5.4, но не ниже:
1
3
30
30
1
---------------------------------------------------------------------------------
false
file://./transport-archive
sufd-db.properties
Для активизации пула bone необходимо его раскомментировать, закомментировав при этом пул c3p0:
#sufd.data-source-type=c3p0
sufd.data-source-type=bone
Также установить следующие значения:
sufd.data-source.bone.partitionCount=5
sufd.data-source.bone.minConnectionsPerPartition=10
sufd.data-source.bone.maxConnectionsPerPartition=200
sufd.data-source.bone.releaseHelperThreads = 30
sufd.data-source.bone.statementsCacheSize=0
sufd.data-source.bone.idleMaxAgeInMinutes=60
Проверить значения параметров в jetty.xml, при отличиях, настроить в соответствии:
В блоке «ThreadPool» параметр – 1000
В блоке « » параметр – 300000
Проверить значения параметров в sufd.properties, при отличиях, настроить в соответствии:
sufd.resource.serverCaching = true
sufd.resource.cacheEvictOnGC = false
sufd.debug = false
6.2.3.Конфигурация: ОЗУ 150 Гб
В Java-директиве необходимо прописать следующие значения:
linux.sh
GC_SETTINGS="-Xmx138g -Xms70g -XX:MaxPermSize=2g -XX:+UseParallelGC -XX:+UseParallelOldGC"
transport.xml
Установить значения:
200
1000
5000
0/1 * * * * ? (во всех местах)
0/1 * * * * ? (во всех местах)
В блоке «documentQueue/lowPriority» установить, как было на 5.4, но не ниже:
15
15
В блоке «documentQueue/normalPriority» установить, как было на 5.4, но не ниже:
20
20
В блоке «documentQueue/highPriority» установить, как было на 5.4, но не ниже:
10
10
30
30
1
В блоке «packetQueue/lowPriority» установить, как было на 5.4, но не ниже:
2
8
В блоке «packetQueue/normalPriority» установить, как было на 5.4, но не ниже:
3
12
В блоке «packetQueue/highPriority» установить, как было на 5.4, но не ниже:
2
5
30
30
1
---------------------------------------------------------------------------------
false
file://./transport-archive
sufd-db.properties
Для активизации пула bone необходимо его раскомментировать, закомментировав при этом пул c3p0:
#sufd.data-source-type=c3p0
sufd.data-source-type=bone
Также установить следующие значения:
sufd.data-source.bone.partitionCount=5
sufd.data-source.bone.minConnectionsPerPartition=30
sufd.data-source.bone.maxConnectionsPerPartition=300
sufd.data-source.bone.releaseHelperThreads = 30
sufd.data-source.bone.statementsCacheSize=0
Проверить значения параметров в jetty.xml, при отличиях, настроить в соответствии:
В блоке «ThreadPool» параметр – 1500
В блоке « » параметр – 300000
Проверить значения параметров в sufd.properties, при отличиях, настроить в соответствии:
sufd.resource.serverCaching = true
sufd.resource.cacheEvictOnGC = false
sufd.debug = false
|