2015-11-27 8 views
14

Wir haben ES 2.0 auf 3 EC2 c4.4xlarge-Knoten (16 Kerne, 32 GB Arbeitsspeicher) implementiert, 16G für ES zugewiesen, 500GB mit jeweils IO1/4000 IOPS.Langsame Indexgeschwindigkeit von Elasticsearch

Problem: Wir erwarten große Leistung auf dieser Hardware-Konfiguration wird jedoch eine sehr langsame Schaltgeschwindigkeit beobachtet.

Unser Dokument ist etwa 10-50k groß, wir verwenden den Java Transport Client zum Einfügen. Die Geschwindigkeit war für die ersten 50.000 bei ungefähr 1000/Sekunde in Ordnung und verlangsamte sich dramatisch auf 100-200/Sekunde.

In der Zwischenzeit wir auf dem niedrigen Ressourcenverbrauch suchen:

  1. CPU ist etwa 1-20% nur (16 Core-CPU)
  2. IO Schreib nur über 4-10Mb/Sekunde
  3. ist
  4. Speicherverbrauch liegt bei ca. 20-30% nur

Anforderungen: also ich kann nicht verstehen, warum es so langsam ist, während alle Rekurse so frei sind, Was kann ich tun, um die Effizienz zu steigern? Danke. Hier

ist die Config-Datei, die wir verwenden:

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]+)?/ 

Hier ist htop und iostat während der Ausführung des Auftrags: htop

iostat

+0

machst du Massenindizierung? Wie viele Repliken hast du? Wie viele Standard-ES-Einstellungen haben Sie geändert? – ChintanShah25

+0

wir simulieren hohe gleichzeitige Schreibvorgänge. 5 Scherben und 2 Repliken hier. Ich habe die Einstellungsdatei FYI aktualisiert. –

+0

führen Sie "Suchoperationen" während "Massenindizierung" aus? auch Indexierungsanfragen gehen zu einem Knoten oder allen drei? – ChintanShah25

Antwort

8

Rüsten Sie Ihren ES auf die neueste Version, weil in in den letzten Veröffentlichungen haben sie es produktionsfreundlicher gemacht und das stabilste Release ist jetzt das neueste 2.3

können Sie versuchen, die Dinge zu folgenden Indizierung schneller gehen:

  1. einige Master-Knoten Stellen, getrennt von Datenknoten, wie es Last auf alle Cluster reduzieren.
  2. Disable OS-Swapping, nimmt ES kümmern, dass und Überprüfen Sie die Heap-Größe auf allen Maschinen Heap Sizing
  3. Überprüfen Sie Ihre Dokumente von ähnlicher Größe sind immer, können Sie Verwendung von Bulk-Indizierung und optimieren Sie Einstellungen dort wie chunk_size machen in Anzahl der Datensätze oder in Speichergröße
  4. Wenn Sie mit Skript versuchen, dies zu optimieren, da sie die Indexierung verlangsamen, können Sie den Skriptwert nach Möglichkeit als Vorverarbeitung speichern, da ES nicht für die Skripterstellung ausgelegt ist.
  5. prüfen Anzahl von Scherben pro Knoten und versuchen, dass
  6. Lesen Sie mehr darüber, wie ES Jungs vorschlagen Produktion bereit System Elasticsearch in Production
  7. Ein weiterer Blog Elasticsearch Indezes Performance Considerations for Elasticsearch Indexing
auf die Erhöhung zu arbeiten Routing mit über den Knoten zum Ausgleich

Überprüfen Sie diese Antwort, um ELK Stack auf drei Servern optimal einzurichten. Optimal way to set up ELK stack on three servers