3

ElasticSearch インデックスはランダムに空になりますが、ほとんどの場合、Rails でビルドされたアプリケーションをデプロイした後に発生します。

ElastiSearch に関する情報は次のとおりです。

curl -XGET 'http://localhost:9200/_nodes?pretty'

curl -XGET 'http://localhost:9200/_cluster/health?pretty'

curl 'localhost:9200/_cat/indices?v'

/var/log/elasticsearch/elasticsearch.log で繰り返されるスタック トレース:

[2014-11-21 16:46:05,204][WARN ][cluster.service          ] [Joe Cartelli] failed to reconnect to node [Joe Cartelli][AvwiuMNRRUywfTyii7gI0A][ip-172-31-19-137][inet[/172.31.19.137:9300]]
org.elasticsearch.transport.ConnectTransportException: [Joe Cartelli][inet[/172.31.19.137:9300]] connect_timeout[30s]
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannels(NettyTransport.java:727)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:656)
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:624)
    at org.elasticsearch.transport.TransportService.connectToNode(TransportService.java:146)
    at org.elasticsearch.cluster.service.InternalClusterService$ReconnectToNodes.run(InternalClusterService.java:518)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.net.ConnectException: Connection refused: /172.31.19.137:9300
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.connect(NioClientBoss.java:150)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.processSelectedKeys(NioClientBoss.java:105)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.process(NioClientBoss.java:79)
    at org.elasticsearch.common.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
    at org.elasticsearch.common.netty.channel.socket.nio.NioClientBoss.run(NioClientBoss.java:42)
    at org.elasticsearch.common.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.elasticsearch.common.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    ... 3 more

Obs: 172.31.19.137 IP アドレスは、AWS 上の EC2 インスタンスのプライベート IP です。

編集:

それでもエラーが発生し、この問題に関する新しい情報が得られました。

「データがなくなった」後、調べてみるelasticsearch.logスタックトレースが何度も出力されていました。このエラーが「データがなくなった」前か後かはわかりません。インデックス名はproducts_production_20141130122307375.

コマンドを実行してすべての Elasticsearch インデックスを一覧表示するcurl 'localhost:9200/_cat/indices?v'と、製品インデックスが出力されましたが、番号が異なります: products_production_20141XXXXXXXXXX(正確な番号は書き留めませんでした)。

では、なぜインデックスの名前が同じではなかったのでしょうか?

奇妙な理由で、Rails/Searchkick がインデックスを再作成してデータを失う可能性はありますか?

編集2

この問題は、ElasticSearch がこれをログに記録した後に発生します。

[2014-12-02 00:47:10,698][INFO ][cluster.metadata         ] [Tyr] [products_production_20141202004040313] update_mapping [product] (dynamic)
[2014-12-02 00:58:02,173][INFO ][cluster.metadata         ] [Tyr] [products_production_20141202005801257] creating index, cause [api], shards [5]/[1], mappings [_default_]
[2014-12-02 00:58:46,064][INFO ][cluster.metadata         ] [Tyr] [products_production_20141202005801257] update_mapping [product] (dynamic)
[2014-12-02 00:58:48,371][INFO ][cluster.metadata         ] [Tyr] [products_production_20141202004040313] deleting index

searchkickインデックスを再作成し、古いインデックスの製品を失うようです。

4

1 に答える 1

3

おそらく、この問題はあなたの問題に関連している可能性があります:

https://github.com/ankane/searchkick/issues/307

于 2014-12-10T19:42:11.687 に答える