Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Настройка Elasticsearch ›Важная конфигурация системы

Обеспечение того, чтобы временный каталог JNA допускал исполняемые файлы

Это актуально только для Linux.

Elasticsearch использует библиотеку Java Native Access (JNA) и другую библиотеку под названием libffi для выполнения некоторых платформозависимых нативных кодов. В Linux нативный код, лежащий в основе этих библиотек, извлекается во время выполнения во временную директорию, а затем отображается в исполняемых страницах адресного пространства Elasticsearch. Это требует, чтобы базовые файлы не находились на файловой системе, смонтированной с опцией noexec.

По умолчанию Elasticsearch создаст свой временный каталог в /tmp. Однако некоторые усиленные установки Linux монтируют /tmp с опцией noexec по умолчанию. Это препятствует корректной работе JNA и libffi. Например, при запуске JNA может не загрузиться с исключением java.lang.UnsatisfiedLinkerError или с сообщением, похожим на failed to map segment from shared object, или libffi может отобразить сообщение, такое как failed to allocate closure. Обратите внимание, что сообщения об исключениях могут отличаться в разных версиях JVM. Кроме того, компоненты Elasticsearch, которые полагаются на выполнение нативного кода через JNA, могут завершиться сообщениями, указывающими, что это because JNA is not available.

Для решения этих проблем необходимо либо удалить опцию noexec из вашей файловой системы /tmp, либо настроить Elasticsearch на использование другого расположения для временного каталога, установив переменную окружения $ES_TMPDIR. Например:

  • Если вы запускаете Elasticsearch напрямую из командной строки, установите $ES_TMPDIR следующим образом:

    export ES_TMPDIR=/usr/share/elasticsearch/tmp
  • Если вы используете systemd для запуска Elasticsearch как службы, добавьте следующую строку в раздел [Service] в файле перезаписи конфигурации службы:

    Environment=ES_TMPDIR=/usr/share/elasticsearch/tmp

Если вам нужен более точный контроль над расположением этих временных файлов, вы также можете настроить путь, используемый JNA, с помощью флага JVM -Djna.tmpdir=<path>, и вы можете настроить путь, используемый libffi, для своих временных файлов, установив переменную окружения LIBFFI_TMPDIR. Будущие версии Elasticsearch могут потребовать дополнительной настройки, поэтому вы должны предпочитать устанавливать ES_TMPDIR, где это возможно.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/executable-jna-tmpdir.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API