2015-05-05 7 views
13

Perché ricevo questi avvisi dopo aver aggiunto più dati al mio elasticsearch? E gli avvisi sono diversi ogni volta che sfoglio il dashboard.Fetch Courier: shards failed

"Corriere Recupero: 30 di 60 frammenti falliti."

Example 1

Example 2

Maggiori dettagli:

Si tratta di un nodo esclusivo anche sulla CentOS 7,1

/etc/elasticsearch/elasticsearch.yml

index.number_of_shards: 3 
index.number_of_replicas: 1 

bootstrap.mlockall: true 

threadpool.bulk.queue_size: 1000 
indices.fielddata.cache.size: 50% 
threadpool.index.queue_size: 400 
index.refresh_interval: 30s 

index.number_of_shards: 5 
index.number_of_replicas: 1 

/usr/share/elasticsearch/bin/elasticsearch.in.sh

ES_HEAP_SIZE=3G 

#I use this Garbage Collector instead of the default one. 

JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC" 

stato del cluster

{ 
    "cluster_name" : "my_cluster", 
    "status" : "yellow", 
    "timed_out" : false, 
    "number_of_nodes" : 1, 
    "number_of_data_nodes" : 1, 
    "active_primary_shards" : 61, 
    "active_shards" : 61, 
    "relocating_shards" : 0, 
    "initializing_shards" : 0, 
    "unassigned_shards" : 61 
} 

dettagli grappolo

{ 
    "cluster_name" : "my_cluster", 
    "nodes" : { 
    "some weird number" : { 
     "name" : "ES 1", 
     "transport_address" : "inet[localhost/127.0.0.1:9300]", 
     "host" : "some host", 
     "ip" : "150.244.58.112", 
     "version" : "1.4.4", 
     "build" : "c88f77f", 
     "http_address" : "inet[localhost/127.0.0.1:9200]", 
     "process" : { 
     "refresh_interval_in_millis" : 1000, 
     "id" : 7854, 
     "max_file_descriptors" : 65535, 
     "mlockall" : false 
     } 
    } 
    } 
} 

Sono curioso circa il "mlockall": falso perché da yml ho scritto bootstrap.mlockall: vero

tronchi

un sacco di linee come:

org.elasticsearch.common.util.concurrent.EsRejectedExecutionException: rejected execution (queue capacity 1000) on [email protected]a9a34f5 

risposta

3

Questo è probabilmente un'indicazione che c'è un problema con il cluster di Salute. Senza saperne di più sul tuo cluster, non c'è molto altro da dire.

+0

io non faccio sapere quali dettagli del mio cluster potrebbero essere utili per risolvere questo problema. Qualche idea? È solo un unico nodo. Aggiungerò ulteriori dettagli alla domanda. –

+1

hai bisogno di mostrare lo stato del cluster, la memoria allocata al cluster, i descrittori di file disponibili, il sistema operativo, ecc. Cerca nel log elasticsearch anche per vedere se c'è qualcosa di ovvio lì (come memoria insufficiente, troppi file aperti, ecc.) – Alcanzar

+0

Ho aggiunto ulteriori dettagli. Riguardo a queste eccezioni, forse avrei bisogno di aumentare alcuni threadpool o qualcosa nel file yml. Grazie per l'aiuto. –

18

Per me l'ottimizzazione della ricerca del threadpool queue_size ha risolto il problema. Ho provato un numero di altre cose e questo è quello che lo ha risolto.

ho aggiunto questo al mio elasticsearch.yml

threadpool.search.queue_size: 10000 

e quindi riavviato elasticsearch.

ragionamento ... (dalla documentazione)

Un nodo detiene diversi pool di thread per migliorare come thread consumo di memoria sono gestiti all'interno di un nodo. Inoltre, molti di questi pool dispongono di code associate, che consentono di mantenere le richieste in sospeso a trattenute anziché eliminate.

e per la ricerca in particolare ...

Per operazioni di conteggio/ricerca. Il valore predefinito è fissati con una dimensione di int ((# di available_processors * 3)/2) + 1, QUEUE_SIZE del 1000.

Per maggiori informazioni è possibile consultare l'elasticsearch docs here ...

Ho avuto difficoltà a trovare queste informazioni quindi spero che questo aiuti gli altri!

+1

grazie ha funzionato per me. La chiave di configurazione è thread_pool.search.queue_size not threadpool.search.queue_size –

1

Sono d'accordo con l'opinione di @ Philip, ma è necessario riavviare elasticsearch almeno su Elasticsearch> = 1.5.2, perché è possibile impostare dinamicamente lo threadpool.search.queue_size.

curl -XPUT http://your_es:9200/_cluster/settings 
{ 
    "transient":{ 
     "threadpool.search.queue_size":10000 
    } 
} 
+2

Con Elasticsearch> = versione 5, non è possibile - https://discuss.elastic.co/t/transient-setting-threadpool-search-queue-size -not-dynamically-updateable/72576. Devi usare il file di configurazione di yaml. – Xdg

0

da elasticsearch> = versione 5, la sua non è possibile aggiornare le impostazioni di cluster per thread_pool.search.queue_size utilizzando _cluster/impostazioni API. Nel mio caso l'aggiornamento del file yml ElasticSearch non è un'opzione, poiché se il nodo non riesce, il codice di ridimensionamento automatico porterà altri nodi ES con le impostazioni yml predefinite.

Ho un cluster con 3 nodi e 400 con shard primari attivi con 7 thread attivi per la dimensione della coda di 1000. L'aumento del numero di nodi su 5 con configurazione simile ha risolto il problema in quanto le query vengono distribuite orizzontalmente a più nodi disponibili .

-1

Ho ottenuto questo errore quando mia domanda mancava un preventivo di chiusura:

field:"value

Courier Fetch: 5 of 35 shards failed.

nei miei ceppi elasticsearch vedo queste eccezioni:

Caused by: org.elasticsearch.index.query.QueryShardException: 
    Failed to parse query [field:"value] 
... 
Caused by: org.apache.lucene.queryparser.classic.ParseException: 
    Cannot parse 'field:"value': Lexical error at line 1, column 13. 
    Encountered: <EOF> after : "\"value" 
+0

Questa è una domanda piuttosto che una risposta? Controlla la query di Kibana che stai utilizzando, sembra che non sia propriamente "quotata". 'Impossibile analizzare query [field:" value] '. Puoi fornire maggiori dettagli? –

+0

Questa è una risposta, questo errore può verificarsi a causa di una query errata, non solo di queue_size ecc. Come suggeriscono altre risposte. – spiffytech