16

EC2サーバーでElasticSearchを実行しています。ElasticSearchのロギング/デバッグを理解するのに問題があります。

時折、何日も正常に実行された後、サービスが消えることがあります(クラッシュしていると思います)。例えば:

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

このElasticSearchページによると、ログは/var/log/elasticsearch...で利用できると思っていましたが...

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

/config/logging.yml私はファイルをまったく変更していません。ElasticSearchはrootとして実行されているため、権限に問題はありません。

私は何が欠けていますか?


imotovの応答によると、ログファイルは/root/elasticsearch/elasticsearch-0.20.5/logs...で見つかりましたが、彼が予測したように、それらは非常に役に立ちませんでした。

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)

これは非常に古いバージョンのようです。現在、アップグレードに取り組んでいます。

記憶グラフも見てみました

ここに画像の説明を入力してください

ESが死ぬ直前に奇妙なスパイクがあったことがわかります。ここでソースを見つけようとしています。他の唯一のプロセスはノードである必要があります。それらはそれぞれ4Gbと1.2Gbに制限されています(ESが停止し、ノードだけが残った後、RAMは1.2Gbに低下しました)。したがって、ElasticSearchが4Gbを超えたか、他の何かがメモリの急増を引き起こしました...

FWIW、m1.largeインスタンス(8GB RAM)を使用しています。

4

2 に答える 2

34

比較的新しいバージョンのelasticsearchを実行する場合は、次のコマンドを実行することでログファイルの場所を見つけることができるはずです。

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

しかし、elasticsearchが突然消えた場合、これらのログには何も見つからない可能性があります。古いバージョンのJava(1年以上前)を実行している場合は、Javaプロセスがクラッシュしている可能性があります。これが発生すると、JVMは通常hs_err_pidXXXX.log 、ハードドライブ(通常は/tmp/Linux)に名前の付いたファイルを残します。ファイルが見つかるかどうかを確認し、Javaを最新バージョンにアップグレードしてみてください。

Elasticsearchが突然消える2番目の考えられる理由は、oom-killerです。これは、システムのメモリが不足したときに最大のプロセス(この場合はelasticsearch)を開始して強制終了するプロセスです。前回elasticsearchが消えた頃のsyslogとkern.logを確認してください。このようなメッセージが表示された場合

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

OSに多くのメモリを残したり、より大きなインスタンスにアップグレードしたりするには、elasticsearchのヒープサイズを減らす必要がある場合があります。

于 2013-03-05T04:12:03.950 に答える