簡體   English   中英

Elasticsearch的索引速度慢

[英]Slow index speed of Elasticsearch

我們在3個EC2 c4.4xlarge(16個內核,32GB內存)節點上部署了ES 2.0,為ES分配了16G,在每個上分配了500GB和io1 / 4000 IOPS。

問題 :我們期望從這個硬件配置中獲得很好的性能,但是觀察到非常慢的索引速度

我們的文檔大小約為10-50k,我們使用Java傳輸客戶端進行插入。 前50000的速度大約為1000 /秒,並且速度急劇下降到100-200 /秒。

與此同時,我們正在考慮資源消耗低:

  1. CPU僅約1-20%(16核CPU)
  2. IO寫入僅約4-10Mb /秒
  3. 內存消耗僅約20-30%

要求 :所以我無法理解為什么它如此緩慢而所有資源都是如此自由, 我能做些什么來提高效率? 謝謝。

這是我們使用的配置文件:

cluster.name: {{ env }}-{{ app }}
path.data: /data/es
path.logs: /data/es-logs
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["xxxx"]
bootstrap.mlockall: true
threadpool.search.queue_size: 300
threadpool.index.type: fixed
threadpool.index.size: 16
threadpool.index.queue_size: 250000
index.refresh_interval: 1s
index.translog.flush_threshold_ops: 50000
indices.memory.index_buffer_size: 30%
indices.memory.min_shard_index_buffer_size: 12mb
indices.memory.min_index_buffer_size: 96mb
script.inline: on
script.indexed: on
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/

運行這個工作時,這是htop和iostat: HTOP

iostat的

將ES升級到最新版本,因為在最近的版本中,它們使其更加生產友好,現在最穩定的版本是最新版本2.3

您可以嘗試以下方法使索引更快:

  1. 創建一些主節點,與數據節點分開,因為它將減少所有群集的負載。
  2. 禁用操作系統交換,ES負責處理並檢查所有計算機上的堆大小堆大小
  3. 檢查您的文檔總是大小相似,您可以使用批量索引並在那里調整設置,如chunk_size記錄數或內存大小
  4. 如果您正在使用腳本嘗試優化它,因為它們使索引變慢,您可以將腳本值存儲(如果可能)作為預處理,因為ES不是為處理腳本而設計的。
  5. 檢查每個節點的分片數,並嘗試使用路由在節點之間平衡分片數
  6. 閱讀更多關於ES人員如何建議生產就緒系統在生產中使用Elasticsearch的更多信息
  7. 另一篇關於增加Elasticsearch索引性能的博客有關Elasticsearch Indexing的性能注意事項

檢查此答案以獲得在三台服務器上設置ELK Stack的最佳方法。 在三台服務器上設置ELK堆棧的最佳方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM