Elastic Docker Composeに触発されたElasticSearch、Logstash、Filebeat、およびKibanaを使用したドッカーセットアップを実行しています。私は最初にシステムに15GBのログファイルをロードする必要がありますが(Filebeat-> Logstash-> ElasticSearch)、パフォーマンスに問題があります。ElasticSearchの初期一括インポートのベストプラクティス
Filebeat/LogstashがElasticSearchのためにあまりにも多くの作業を出力しているようです。私はこのようなElasticSearchのエラーの束を見始めるいくつかの時間後:https://www.elastic.co/guide/en/elasticsearch/guide/master/indexing-performance.html#segments-and-merging:
[INFO ][o.e.i.IndexingMemoryController] [f8kc50d] now throttling indexing for shard [ log-2017.06.30 ]: segment writing can't keep up
私はを絞るマージを無効にする方法については、この古い文書の記事を見つけました。
PUT /_cluster/settings
{
"transient" : {
"indices.store.throttle.type" : "none"
}
}
しかし、現在のバージョン(ElasticSearch 6)で、それは私にこのエラーを与える:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "transient setting [indices.store.throttle.type], not dynamically updateable"
}
],
"type": "illegal_argument_exception",
"reason": "transient setting [indices.store.throttle.type], not dynamically updateable"
},
"status": 400
}
どのように私は、上記の問題を解決することができますか?
VMには4つのCPUコア(Intel Xeon E5-2650)があり、ElasticSearchには4GBのRAM、LogstashとKibanaそれぞれ1GBが割り当てられています。スワッピングは "swapoff -a"を使用して無効になります。 Xパックと監視が有効になります。私はこのログサーバーに1つのESノードしか持っていません。この最初の一括インポートには複数のノードが必要ですか?
EDIT1:
number_of_replicasを変更とREFRESH_INTERVALはそれがより良い実行させるように思われます。まだテストしています。
PUT /log-*/_settings
{
"index.number_of_replicas" : "0",
"index.refresh_interval" : "-1"
}
クラスタ統計情報(ノード、シャード、レプリカの種類、ハードウェアの種類)は何ですか?あなたはiostat、JVM統計など他の統計情報を持っていますか?他の設定は変更しましたか? – Egor
@Egorあなたのお礼をありがとう。私は追加情報で質問を更新しました。 – dhrm
logstash内のワーカースレッドの数を減らすことができます(起動時に-wオプション)。 elasticsearchについては、使用可能なRAMの半分を用意し、残りのファイルシステムを残すことになっていることを覚えています(「Xmxを物理RAMの50%以下に設定」https://www.elastic.co/guide /en/elasticsearch/reference/master/heap-size.html)。 – baudsp