Настройка вспомогательного ПО для оптимизации работы {{ productName }}
Введение
Comindware Platform использует следующее вспомогательное ПО:
- Apache Ignite — распределённая база данных;
- JVM — виртуальная машина Java;
- OpenSearch (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)
Настройка OpenSearch (Elasticsearch)
Изменение количества шардов
Для OpenSearch (Elasticsearch) можно изменить максимальное количество шардов на каждый в кластере по следующему правилу:
- для повышения производительности OpenSearch (Elasticsearch) количество шардов следует уменьшить до минимально необходимого (от 100 шардов на одно приложение в экземпляре ПО);
- в случае нехватки ресурсов для OpenSearch (Elasticsearch) при большом объеме данных количество шардов следует увеличить (но при этом производительность может снизиться).
- Откройте файл конфигурации OpenSearch (Elasticsearch):
elasticsearch.yml -
Установите требуемое количество шардов с помощью директивы
cluster.max_shards_per_node:сluster.max_shards_per_node: 3000 -
Перезапустите службу OpenSearch (Elasticsearch), чтобы изменения вступили в силу.
Изменение размера кучи JVM
Для JVM OpenSearch (Elasticsearch) можно назначить минимальный (начальный) и максимальный размер области памяти для кучи с помощью директив Xms и Xmx.
Примечание
- Для кучи JVM OpenSearch (Elasticsearch) рекомендуется выделять не более половины оперативной памяти машины, чтобы оставался достаточный объем ОЗУ для работы Lucene.
- Чем меньше размер кучи OpenSearch (Elasticsearch), тем выше будет производительность OpenSearch (Elasticsearch) и Lucene.
- Не следует выделять для кучи JVM более 32 ГБ, так как это может привести к снижению производительности и перерасходу памяти.
- JVM может фактически использовать больше памяти, чем размер кучи, заданный директивами и
XmsиXmx. - Размер кучи можно задать в гигабайтах, мегабайтах, килобайтах:
-Xms<size>[g|G|m|M|k|K]. Если не указать единицу измерения, то размер кучи будет задан в байтах.
- Откройте файл конфигурации JVM OpenSearch (Elasticsearch):
/etc/elasticsearch/jvm.options -
Установите размер кучи начальный и максимальный размер кучи, например
-Xms4g(начальный. 4 ГБ) и-Xmx32g(макс. 32 ГБ):-Xms4g-Xmx32g -
Перезапустите службу OpenSearch (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;...}