Не може да стартира услугата след надграждане на 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. Извлече 1.4.4 zip в директорията 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) в директорията на elasticsearch bin стартирайте: премахване на услугата; сервизно инсталиране; стартиране на услугата - 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 по подразбиране“ в GUI, който се появява с 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

Това, което проработи за мен, беше да стартирам "service manager" в папката 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