Настройка конфигурации вспомогательного ПО для оптимизации работы Comindware Platform
Содержание
Введение
Comindware Platform использует следующее вспомогательное ПО:
- Apache Ignite — распределенная база данных;
- JVM — виртуальная машина Java;
- Elasticsearch — поисковая система;
- NGINX — обратный прокси-сервер.
Для повышения производительности и выделения дополнительных ресурсов Comindware Platform (далее «экземпляр ПО») можно изменить некоторые параметры конфигурации вспомогательного ПО.
Настройка Apache Ignite
Изменение размера выделяемой области памяти
В Apache Ignite можно назначить максимальный размер области памяти с помощью директивы maxSize
.
- Откройте файл
/var/www/instancename/Ignite.config
, гдеinstancename
— имя экземпляра ПО. - Найдите раздел
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
в разделеdataRegionConfigurations
, содержащий директиву<property name="persistenceEnabled" value="true" />
. - Внутри этого раздела найдите директиву
property name="maxSize"
. - Установите требуемый размер области памяти, например 8 ГБ:
<property name="maxSize" value="#{8L * 1024 * 1024 * 1024}" />
- Перезапустите экземпляр ПО, чтобы изменения вступили в силу.
Изменение размера кучи JVM
Для JVM Apache Ignite можно назначить минимальный (начальный) и максимальный размер области памяти для кучи с помощью директив Xms
и Xmx
.
Примечание
- JVM может фактически использовать больше памяти, чем размер кучи, заданный директивами и
Xms
иXmx
. - Размер кучи можно задать в гигабайтах, мегабайтах, килобайтах:
-Xms<size>[g|G|m|M|k|K]
. Если не указать единицу измерения, то размер кучи будет задан в байтах.
- Установите переменную среды
JVM_OPTS
, указав в ней требуемый начальный и максимальный размер кучи, например-Xms10m
(начальный. 10 МБ) и-Xmx16g
(макс. 16 ГБ):export JVM_OPTS="-Xms10m -Xmx16g
-XX:MaxDirectMemorySize=1g
-Djava.net.preferIPv4Stack=true
-XX:+AlwaysPreTouch -XX:+UseG1GC
-XX:+ScavengeBeforeFullGC -XX:+DisableExplicitGC
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
-DIGNITE_QUIET=false
-DIGNITE_NO_ASCII=true" - Перезапустите экземпляр ПО, чтобы изменения вступили в силу.
Связанные статьи
- Общие рекомендации по оптимизации производительности Apache Ignite (английский язык, официальное руководство Apache Ignite)
- Настройка памяти и JVM (английский язык, официальное руководство Apache Ignite)
Настройка Elasticsearch
Изменение количества шардов
Для Elasticsearch можно изменить максимальное количество шардов на каждый в кластере по следующему правилу:
- для повышения производительности Elasticsearch количество шардов следует уменьшить до минимально необходимого (от 100 шардов на одно приложение в экземпляре ПО);
- в случае нехватки ресурсов для Elasticsearch при большом объеме данных количество шардов следует увеличить (но при этом производительность может снизиться).
- Откройте файл конфигурации Elasticsearch:
elasticsearch.yml
- Установите требуемое количество шардов с помощью директивы
cluster.max_shards_per_node
:сluster.max_shards_per_node: 3000
- Перезапустите службу Elasticsearch, чтобы изменения вступили в силу.
Изменение размера кучи JVM
Для JVM Elasticsearch можно назначить минимальный (начальный) и максимальный размер области памяти для кучи с помощью директив Xms
и Xmx
.
Примечание
- Для кучи JVM Elasticsearch рекомендуется выделять не более половины оперативной памяти машины, чтобы оставался достаточный объем ОЗУ для работы Lucene.
- Чем меньше размер кучи Elasticsearch, тем выше будет производительность Elasticsearch и Lucene.
- Не следует выделять для кучи JVM более 32 ГБ, так как это может привести к снижению производительности и перерасходу памяти.
- JVM может фактически использовать больше памяти, чем размер кучи, заданный директивами и
Xms
иXmx
. - Размер кучи можно задать в гигабайтах, мегабайтах, килобайтах:
-Xms<size>[g|G|m|M|k|K]
. Если не указать единицу измерения, то размер кучи будет задан в байтах.
- Откройте файл конфигурации JVM Elasticsearch:
/etc/elasticsearch/jvm.options
- Установите размер кучи начальный и максимальный размер кучи, например
-Xms4g
(начальный. 4 ГБ) и-Xmx32g
(макс. 32 ГБ):-Xms4g
-Xmx32g
- Перезапустите службу Elasticsearch, чтобы изменения вступили в силу.
Связанные статьи
- Ускорение поиска (английский язык, официальное руководство Elasticsearch)
- Ускорение индексации (английский язык, официальное руководство Elasticsearch)
- Масштабирование кластера Elasticsearch
- Оптимизация производительности кластера Elasticsearch
- Как уменьшить/увеличить потребление памяти Elasticsearch
- Elasticsearch Heap: Размер и Свопинг
- Настройка размера кучи (английский язык, официальное руководство Elasticsearch)
- Оптимизация размера кучи Java для Elasticsearch (английский язык)
Настройка NGINX
В конфигурации NGINX для экономии трафика и уменьшения времени загрузки страниц можно включить сжатие, а также увеличить количество подключений.
- Откройте для редактирования файл
/etc/nginx/nginx.conf
- В разделе
events
задайте количество подключений с помощью директивыworker_connections
:events {
...
worker_connections 768;
...
}
- В разделе http включите и настройте сжатие:
http {
...
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
...
}