ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen
Ich speichere Protokolle in der elastischen Suche aus meiner reaktiven Federanwendung. Ich erhalte den folgenden Fehler bei der elastischen Suche:
Elasticsearch-Ausnahme [Typ = es_rejected_execution_exception, Grund = abgelehnte Ausführung der Verarbeitung von [129010665] [Indizes: Daten / Schreiben / Bulk [s] [p]]: Anforderung: BulkShardRequest [[logs-dev-2020.11.05] [1]] enthält [index {[logs-dev-2020.11.05] [_ doc] [0d1478f0-6367-4228-9553-7d16d2993bc2], Quelle [n / a, tatsächliche Länge: [4,1 kb], maximale Länge: 2 kb]}] und eine Aktualisierung, Zielzuordnungs-ID: WwkZtUbPSAapC3C-Jg2z2g, primärer Begriff: 1 in EsThreadPoolExecutor [Name = 10-110-23-125-common-elasticsearch-apps-dev-v1 / write, Warteschlangenkapazität = 200, org.elasticsearch.common .util.concurrent.EsThreadPoolExecutor @ 6599247a [Wird ausgeführt, Poolgröße = 2, aktive Threads = 2, Aufgaben in der Warteschlange = 221, abgeschlossene Aufgaben = 689547]]]
Meine Indexeinstellungen:
{
"logs-dev-2020.11.05": {
"settings": {
"index": {
"highlight": {
"max_analyzed_offset": "5000000"
},
"number_of_shards": "3",
"provided_name": "logs-dev-2020.11.05",
"creation_date": "1604558592095",
"number_of_replicas": "2",
"uuid": "wjIOSfZOSLyBFTt1cT-whQ",
"version": {
"created": "7020199"
}
}
}
}
}
Ich habe diese Seite durchgesehen:
https://www.elastic.co/blog/why-am-i-seeing-bulk-rejections-in-my-elasticsearch-cluster
Ich dachte, das Anpassen der "Schreib" -Größe im Thread-Pool wird sich auflösen, aber es wird auf der folgenden Site als nicht empfohlen erwähnt:
Das Anpassen der Warteschlangengrößen wird daher dringend empfohlen, da das Problem eher als vorübergehende Band-Hilfe behandelt wird, als das zugrunde liegende Problem tatsächlich zu beheben.
Was können wir also noch tun, um die Situation zu verbessern?
Andere Information:
- Elastic Search Version 7.2.1
- Der Clusterzustand ist gut und es handelt sich um 3 Knoten im Cluster
- Der Index wird täglich erstellt, es gibt 3 Shards pro Index
Obwohl Sie Recht haben, dass das Erhöhen der Größe von thread_pool keine dauerhafte Lösung ist, werden Sie froh sein zu wissen, dass elasticsearch selbst die Größe von write thread_pool (Verwendung in Ihren Massenanforderungen) in nur einem geringfügigen Versions-Upgrade von 200 auf 10.000 erhöht hat. Bitte sehen Sie die Größe von 200 in ES 7.8 , während 10k von ES 7.9 .
Wenn Sie die ES 7.X-Version verwenden, können Sie die Größe auch auf 10 KB und dann auf mindestens 1 KB erhöhen (um zu vermeiden, dass die Anforderungen abgelehnt werden).
Wenn Sie eine ordnungsgemäße Lösung wünschen, müssen Sie die folgenden Schritte ausführen
- Finden Sie heraus, ob es konsistent ist oder nur ein kurzzeitiger Burst von Schreibanforderungen, der in einiger Zeit gelöscht wird.
- Wenn es konsistent ist, müssen Sie herausfinden, ob die gesamte Schreiboptimierung vorhanden ist. Weitere Informationen zur Verbesserung der Indexgeschwindigkeit finden Sie in meinen Kurztipps .
- Überprüfen Sie, ob Sie die volle Kapazität Ihrer Datenknoten erreicht haben, und skalieren Sie Ihren Cluster, wenn ja, um die erhöhte / legitime Last zu bewältigen.