2013-03-05 12 views
16

Sto eseguendo ElasticSearch sui miei server EC2. Ho difficoltà a comprendere il logging/debug di ElasticSearch.ElasticSearch scomparso/arrestato - impossibile trovare i file di registro o qualsiasi altra informazione

Occasionalmente, il servizio scompare, dopo aver funzionato bene per giorni (mi aspetto che si blocchi). Ad esempio:

# curl -XGET http://localhost:9200/ 
curl: (7) couldn't connect to host 

Per this ElasticSearch page, mi aspettavo che i miei tronchi sarebbero disponibili in /var/log/elasticsearch ... però ...

# ls /var/data/elasticsearch 
ls: /var/data/elasticsearch: No such file or directory 

Non ho cambiato il file /config/logging.yml in alcun modo. ElasticSearch è in esecuzione come root, quindi non ci dovrebbero essere problemi con le autorizzazioni.

Cosa mi manca?


Per la risposta di imotov, ho trovato il mio file di log al /root/elasticsearch/elasticsearch-0.20.5/logs ... ma come aveva previsto, erano molto scostante.

ho controllato la mia versione di Java:

java version "1.6.0_14" 
Java(TM) SE Runtime Environment (build 1.6.0_14-b08) 
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode) 

Sembra che questo è una versione molto vecchia, e sto lavorando sul miglioramento di esso.

Ho anche avuto uno sguardo al mio grafico di memoria

enter image description here

Possiamo vedere che c'è stato un picco strano poco prima ES morto. Sto cercando di scoprire la fonte, qui. L'unico altro processo dovrebbe essere nodo; sono limitati a 4Gb e 1.2Gb, rispettivamente (una volta che ES è morto e solo il nodo è stato lasciato, la RAM è scesa a 1.2Gb come potete vedere). Quindi o ElasticSearch ha superato il suo 4Gb, o qualcos'altro ha causato un picco nella memoria ...

FWIW, sto usando istanze m1.large (8 GB di RAM).

risposta

30

Se si esegue una relativamente nuova versione di elasticsearch si dovrebbe essere in grado di trovare la posizione dei file di registro eseguendo il comando seguente

curl -s "localhost:9200/_nodes/_local/settings?pretty=true" | fgrep path.logs 

Ma se elasticsearch scompare improvvisamente, è probabile che non troverete nulla in questi registri Se stai utilizzando una versione precedente di java (vecchio di un anno o più), è possibile che il tuo processo java stia andando in crash. Quando accade la JVM lascia tipicamente file denominati hs_err_pidXXXX.log sul disco rigido (in genere in /tmp/ su Linux. Vedere se è possibile trovare qualsiasi e provare ad aggiornare Java alla versione più recente.

Il secondo motivo possibile per improvvisa scomparsa di elasticsearch è oom-killer, è un processo che esegue un kick-in e uccide il processo più grande (elasticsearch nel tuo caso) quando il sistema esaurisce la memoria. Controlla syslog e kern.log in giro per il tempo in cui elasticsearch è scomparso. uno

Out of memory: Kill process 1234 (java) score 567 or sacrifice child 

potrebbe essere necessario ridurre la dimensione heap elasticsearch per lasciare più memoria su OS o aggiornamento a un'istanza più grande.

+0

Grazie mille imotov. Ho aggiornato la mia domanda con i dettagli scoperti dai tuoi suggerimenti: se ti capita di avere più pensieri basati su di essi, sarebbe molto apprezzato. –

+0

È necessario aggiornare definitivamente java. È molto probabilmente il colpevole qui. – imotov

+0

Grazie per aver contribuito a tenere traccia del problema. Ho visto oom_killer nei log quando la ricerca elastica si è interrotta. Trasferirsi a trovato –

1

ho sperimentato stessi problemi:

  • JAVA aggiornamento non ha aiutato
  • Passando da OpenJDK a Oracle non ha cambiato nulla
  • Il consumo di memoria è stato finalmente OK
  • Nessun messaggio di errore da nessuna parte, solo JVM schiantarsi in modo casuale

La mia soluzione era rimuovere sigar lib:

cd  
sudo mv /usr/share/elasticsearch/lib/sigar . 
sudo service elasticsearch restart 

Poiché, tutto procede senza intoppi, l'unico impatto: ho perso il monitoraggio della CPU. ElasticSearch 1.5.1 è in esecuzione su un VPS con Ubuntu 14.04 (OpenVZ).

UPDATE 1: ho ancora da rimuovere lib Sigar con elasticsearch 1.5.2

UPDATE 2: per capire, aggiungere queste opzioni quando si inizia elasticsearch:

XX:. HeapDumpPath =/java_pid. hprof

Percorso a directory o nome file per heap dump. Gestibile.

XX: -HeapDumpOnOutOfMemoryError

heap dump su file quando java.lang.OutOfMemoryError è gettato.

Aiuta a eseguire il debug

+0

Perché rimosso sigar? –

+0

Dovresti controllare questo link per avere maggiori dettagli: https://bugzilla.openvz.org/show_bug.cgi?id=3187 – David

+0

Proverò questo perché ho avuto lo stesso problema per molto tempo e nulla ha fermato elasticsearch a crash dopo alcuni momenti casuali :(thx David – danielgc

Problemi correlati