1

私は RoR を使用してアプリケーションと searchkick という gem を開発しています。この gem は内部的に Elasticsearch を使用しています。すべて正常に動作しますが、プロダクションでは、しばらくするとサイトがダウンするという奇妙な問題に直面しました。私たちが発見した理由は、サーバーのメモリが過剰に使用されていたことです。先週のelasticsearchログファイルをいくつか削除したところ、メモリ使用量が92%から47%に減少したことがわかりました。ローリング ログを使用し、ログは毎日バックアップされます。さて、私たちが直面している問題は、前日のログ ファイルが 1 つしかないため、メモリが大きくなることです。ログ ファイルは、現在のファイルが 4 GB を使用していても、多くのスペースを占有しています!!!! どうすればそれを防ぐことができますか?

メッセージはほとんど警告レベルです。

[00:14:11,744][WARN ][cluster.action.shard ] [Abdul Alhazred] [?][0] sending failed shard for [?][0], node[V52W2IH5R3SwhZ0mTFjodg], [P], s[INITIALIZING], indexUUID [4fhSWoV8RbGLj5jo8PVoxQ], reason [Failed to start shard, message [IndexShardGatewayRecoveryException[[?][0] failed recovery]; nested: EngineCreationFailureException[[?][0] failed to create engine]; nested: LockReleaseFailedException[Cannot forcefully unlock a NativeFSLock which is held by another indexer component: /usr/lib64/elasticsearch-1.1.0/data/elasticsearch/nodes/0/indices/?/0/index/write.lock]; ]]

SO questionのいくつかを見て、ulimitを増やすか、新しいノードを作成して、問題も解決し、サイズを縮小しようとしています。私の limits.conf には、ハードとソフトの nofile 用に 65535 があります。また、sysctl.conf で fs.file-max が 100000 を超えています。ファイル サイズを縮小するために実行できる他の手順はありますか。さらに、elasticsearch 構成の変更についての洞察を得ることができません。

誰かが助けることができれば。ありがとう

4

2 に答える 2

0

はい、ElasticSearch と Lucene はどちらもリソースを大量に消費します。システムを修正するために次のことを行いました。

  1. エラスティックサーチを停止します。(bin/elasticsearch) のようなコマンドから開始する場合は、これを指定して、開始時にヒープを設定してください。たとえば、私は 16GB のボックスを使用しているので、コマンドは

を。ビン/エラスティックサーチ -Xmx8g -Xms8g

b. 構成 (elasticsearch/config/elasticsearch.yml) に移動し、次のことを確認します。

ブートストラップ.mlockall: 真

c. ulimits -Hn と ulimits -Sn を 200000 以上に増やします

  1. サービスとして開始する場合は、次の手順を実行します

を。export ES_HEAP_SIZE=10g

b. 構成 (/etc/elasticsearch/elasticsearch.yml) に移動し、次のことを確認します。

ブートストラップ.mlockall: 真

c. ulimits -Hn と ulimits -Sn を 200000 以上に増やします

サービスとして起動するか、コマンド ラインから起動するかにかかわらず、入力するサイズがヒープの 50% を超えないようにしてください。

于 2015-10-08T20:58:18.740 に答える