Процессы поисковой системы Elasticsearch выполняются в среде Java Virtual Machine (JVM). JVM представляет собой виртуальную машину с выделенным доступом к памяти. Если недостаточно памяти для Elasticearch, в лог-файле <Папка Elasticsearch>/elasticsearch/elasticsearch.log фиксируется ошибка:
[<Дата и время>][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [xOlhTAI] fatal error in thread [elasticsearch[xOlhTAI][refresh][T#4]], exiting
java.lang.OutOfMemoryError: Java heap space
Чтобы посмотреть количество оперативной памяти, которое потребляет Elasticsearch, откройте панель управления Kibana, в меню выберите пункт Stack Monitoring и проверьте значение параметра JVM Heap:
В примере видно, что Elasticsearch потребляет около 28% памяти. В данном случае есть запас по производительности, настройки менять не нужно.
Если параметр JVM Heap превышает 80%, то необходимо выделить больший объем памяти для Elasticsearch. Для этого:
1.Откройте конфигурационный файл <Папка Elasticsearch>/elasticsearch/jvm.options.
2.Перейдите к настройке JVM heap size и увеличьте объем потребляемой памяти. Для этого увеличьте значение параметров:
•Xms – минимальный объем потребляемой памяти;
•Xmx – максимальный объем потребляемой памяти.
Потребляемый объем задается в гигабайтах. Между названием параметра и его значением пробел не ставится.
Рекомендации:
•производительность поисковой системы выше, когда во время ее работы не требуется выделять дополнительную память. Поэтому установите минимальный объем выделяемой памяти (Xms) равным максимальному (Xmx).
Пример:
-Xms16g # Минимальный объем потребляемой памяти – 16 ГБ
-Xmx16g # Максимальный объем потребляемой памяти – 16 ГБ
•установите значение JVM heap size равным 50% доступной оперативной памяти.
•при настройке параметра Xmx не превышайте пороговое значение 32 ГБ, т.к. скорость поиска может снизиться. Если требуется выделить больше 32 ГБ памяти, то рекомендуется установить дополнительный узел (node) Elasticsearch.
Подробнее см. в документации Elasticsearch, статью Setting the heap size.
Поисковая система работает быстрее, если ее процесс выполняется только в оперативной памяти без сохранения кэша данных на диске. Поэтому дополнительно рекомендуется отключить файл подкачки. Для этого в ОС Linux и macOS заблокируйте адресное пространство процесса Elasticsearch в оперативной памяти. Для этого в конфигурационном файле /etc/default/elasticsearch параметру bootstrap.mlockall присвойте значение true, параметру MAX_LOCKED_MEMORY – значение unlimited.
© Компания Directum, 2024 |