Не удается запустить службу после обновления Elasticsearch с 1.4.1 до 1.4.4

Я успешно установил Elasticsearch в Windows 7 версии x64, используя ELS 1.4.1. После обновления до Kibana 4 RTM требовалась ELS 1.4.4.

Чтобы провести апгрейд, я выполнил следующие шаги:

  1. Скачал ELS 1.4.4
  2. Остановлен и удален сервис ELS 1.4.1
  3. Переименован текущий каталог установки в elasticsearch_bak
  4. Распаковал zip 1.4.4 в каталог elasticsearch
  5. Сравнил /config/elasticsearch.yml и config / logging.yml и применил изменения (которые содержат следующие дополнительные настройки внизу)
# Helps Chrome work properly
http.cors.allow-origin: "/.*/"
http.cors.enabled: true

После запуска служба останавливается в течение нескольких секунд. Журналы следующие:

Версия Java

(Обратите внимание, это для целей разработки)

java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) Client VM (build 25.31-b07, mixed mode, sharing)

Журнал событий

The Elasticsearch 1.4.4 (elasticsearch) service terminated with service-specific error Incorrect function..

elasticsearch-stderr-2015.05.20.log

2015-02-20 08:49:13 Commons Daemon procrun stderr initialized
Exception in thread "main" ror: Could not initialize class org.elasticsearch.Version
    at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
    at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)
The data area passed to a system call is too small.

Failed to start service

elasticsearch-stdout-2015.05.20.log

2015-02-20 08:46:03 Commons Daemon procrun stdout initialized

elasticsearch.2015-02-20.log

[2015-02-20 08:49:14] [info]  ( prunsrv.c:1284) [ 8560] Service started in 1198 ms.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 4, 0, 0, 0
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1528) [ 8560] Waiting for worker to finish...
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1533) [ 8560] Worker finished.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1559) [ 8560] Waiting for all threads to exit
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 3, 0, 0, 0
[2015-02-20 08:49:14] [debug] ( prunsrv.c:1563) [ 8560] JVM destroyed.
[2015-02-20 08:49:14] [debug] ( prunsrv.c:844 ) [ 8560] reportServiceStatusE: 1, 1066, 0, 1
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1598) [10064] Run service finished.
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1764) [10064] Commons Daemon procrun finished
[2015-02-20 08:49:14] [info]  ( prunsrv.c:1764) [10064] Commons Daemon procrun finished
[2015-02-20 08:49:16] [error] ( prunsrv.c:746 ) [10116] Failed to start 'elasticsearch' service
[2015-02-20 08:49:16] [error] ( prunsrv.c:746 ) [10116] The data area passed to a system call is too small.
[2015-02-20 08:49:16] [info]  ( prunsrv.c:754 ) [10116] Start service finished.
[2015-02-20 08:49:16] [error] ( prunsrv.c:1755) [10116] Commons Daemon procrun failed with exit value: 5 (Failed to start service)
[2015-02-20 08:49:16] [error] ( prunsrv.c:1755) [10116] The data area passed to a system call is too small.

Если я запускаю elasticsearch из командной строки, я получаю эту ошибку:

c:\elk\elasticsearch\bin>elasticsearch
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version
        at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)

person Dominic Zukiewicz    schedule 20.02.2015    source источник


Ответы (7)


У меня была точно такая же проблема, и вот как я ее исправил.

Вот моя установка

Я использую Windows Server 2008 R2 Enterprise - 64-битную версию. Все нормально работало с Java (JRE) версии 1.8.0_25. Эластичный поиск был установлен как служба Windows.

Ровно перед проблемой я обновил Java до версии 1.8.0_31 и перезапустил компьютер.

Вот история шагов, которые я предпринял

Во-первых, после перезапуска машины я заметил, что служба ElasticSearch остановлена. После попытки запустить он снова остановился.

Вот что у меня в журнале событий по этой проблеме:

Служба Elasticsearch 1.4.1 (elasticsearch-service-x64) завершена из-за ошибки, связанной с конкретной службой. Неправильная функция.

Вот что у меня было в elasticsearch-service-x64.2015-02-27.log:

[2015-02-27 14:38:29] [info]  [ 4948] Commons Daemon procrun (1.0.15.0 64-bit) started
[2015-02-27 14:38:29] [info]  [ 4948] Running 'elasticsearch-service-x64' Service...
[2015-02-27 14:38:29] [info]  [ 3048] Starting service...
[2015-02-27 14:38:29] [error] [ 3048] Failed creating java C:\Program Files\Java\jre1.8.0_25\bin\server\jvm.dll
[2015-02-27 14:38:29] [error] [ 3048] The system cannot find the path specified.
[2015-02-27 14:38:29] [error] [ 3048] ServiceStart returned 1
[2015-02-27 14:38:29] [error] [ 3048] The system cannot find the path specified.
[2015-02-27 14:38:29] [info]  [ 4948] Run service finished.
[2015-02-27 14:38:29] [info]  [ 4948] Commons Daemon procrun finished

Затем я изменил значение системной переменной JAVA_HOME на C:\Program Files\Java\jre1.8.0_31

введите описание изображения здесь

Тогда проблема заключалась в следующем:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.Version
        at org.elasticsearch.bootstrap.Bootstrap.buildErrorMessage(Bootstrap.java:254)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:238)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:32)

Что устранило проблему

  1. Я полностью удалил папки bin, config, lib и plugins из папки ElasticSearch.

    Убедитесь, что вы не удалили data каталог, потому что там находятся ваши индексы!

  2. Разархивировал те же папки (bin, config и lib) из elasticsearch-1.4.4.zip.
  3. Запуск SC DELETE elasticsearch-service-x64 от имени администратора в командной строке (для удаления установленной службы)
  4. Бежал F:\Services\elasticsearch\bin>service.bat install

    Installing service      :  "elasticsearch-service-x64"
    Using JAVA_HOME (64-bit):  "C:\Program Files\Java\jre1.8.0_31"
    The service 'elasticsearch-service-x64' has been installed.
    
  5. Запустил сервис

А потом все заработало правильно.

введите описание изображения здесь

person Nikolay Kostov    schedule 27.02.2015
comment
Нет необходимости делать первый шаг, у меня он работал и без него. - person Eldar; 12.05.2015
comment
Я также видел, что эта ошибка возникает с плагинами, несовместимыми с последней версией. - person Chris R. Donnelly; 22.03.2016
comment
Короче говоря: 1) обновить JAVA_HOME до новой версии java 2) в каталоге bin elasticsearch запустить: service remove; установка службы; запуск службы - person Minamoto; 05.08.2016

У меня точно такая же проблема. Появляется после обновления до новой версии Java. Хотя я меняю значение переменной "JAVA_HOME" на новый каталог java, проблема остается.

Затем я перехожу в командную строку, перехожу в каталог ES и запускаю следующую команду:

{ElasticSearch directory}\bin>service manager

Эта команда откроет окно свойств Elasticsearch. (http://i.stack.imgur.com/QQEPG.png )

Затем перейдите на вкладку Java и измените путь виртуальной машины Java на новую версию Java. После этого просто запустите сервис ES

{ElasticSearch directory}\bin>service start
person Madjarov    schedule 01.09.2015

Проблема вызвана service.bat распространением Elastic, которое полагается на Apache Common Procrun и устанавливает JVM с помощью переменной среды %JAVA_HOME%, которая не разрешена правильно.

Поэтому я исправил проблему, установив "JVM по умолчанию" в графическом интерфейсе, который отображается с service.bat manager.

Другой способ решить проблему через командную строку -

elasticsearch-service-x64.exe //US//YOUR_SERVICE_NAME --Jvm auto

i.e.

elasticsearch-service-x64.exe //US//elasticsearch-service-x64 --Jvm auto
person emmekappa    schedule 18.03.2016

Обновлен JDK с jdk1.7.0_21 до jdk1.8.0_77. Изменен Java_Home, и он начал работать нормально.

person Vivek Bhadoria    schedule 02.04.2016

Что сработало для меня, так это запустить «диспетчер служб» в папке bin и установить JVM по умолчанию.

person Observer    schedule 16.02.2017

У меня была установлена ​​другая версия elasticsearch. У меня сработало простое удаление старой версии.

elasticsearch-2.0.0 \ bin> удалить службу

person Michael Goldshmidt    schedule 11.11.2015

Я столкнулся с той же проблемой, и даже с правильным набором системной переменной JAVA_HOME это не сработало.

В конце концов я перешел в папку bin своей установки эластичного поиска и запустил:

service manager

В диспетчере на вкладке Java я установил эти параметры

-Delasticsearch
-Des.path.home=C:\elasticsearch-2.4.5
-Des.default.path.logs=C:\elasticsearch-2.4.5\logs
-Des.default.path.data=C:\elasticsearch-2.4.5\data
-Des.default.path.conf=C:\elasticsearch-2.4.5\config

Сохранил изменения, а затем запустил

service start
person CAOakley    schedule 23.02.2018