ElasticSearch donne une erreur sur la taille de la file d'attente

RemoteTransportException[[la Mort][inet[/172.18.0.9:9300]][bulk/fragment]]; imbriquées: EsRejectedExecutionException[rejeté exécution (file d'attente de capacité 50) sur org.elasticsearch.action.soutien.réplication.TransportShardReplicationOperationaction$AsyncShardOperationAction $ [email protected]];

est-ce que cela signifie que je fais trop d'opérations en une seule fois, ou trop de tâches d'affilée, ou quoi? Y a-t-il un cadre que je devrais augmenter ou quelque chose que je devrais être faire différemment?

Un thread suggère "je pense que vous avez besoin pour augmenter votre pool de threads.vrac.queue_size "(et peut-être " pool de threads.index.(') paramètre de mise en oeuvre dû à des défauts récents."Cependant, je ne veux pas augmenter arbitrairement un cadre sans comprendre la faute.

25
demandé sur David Pfeffer 2013-12-19 17:50:01
la source

4 ответов

vous voulez augmenter le nombre de threads disponibles dans le pool de threads. ES met de côté des threads dans plusieurs pools nommés pour une utilisation sur diverses tâches. Ces pools ont quelques paramètres: type, Taille et taille de la file d'attente.

dans la doc:

Le queue_size permet de contrôler la taille de la file d'attente les demandes qui n'ont pas de fils pour les exécuter. Par défaut, il est réglé à -1, ce qui signifie son illimité. Lorsqu'une demande arrive, et la file d'attente est plein, il va annuler la demande.

pour moi, cela signifie que vous avez plus de requêtes en vrac en attente d'un thread de la piscine pour exécuter l'une d'elles que votre taille de file actuelle. La documentation semble indiquer que la taille de la file d'attente est fixée par défaut à -1 (le texte ci-dessus le dit) et à 50 (l'appel à la quantité dans le doc le dit). Vous pourriez jetez un coup d'oeil à la source pour être sûr pour votre version de es ou de définir le nombre plus élevé et voir si vos problèmes en vrac tout simplement aller loin.

ES paramètres de pool de threads doco

20
répondu mconlin 2013-12-20 15:42:06
la source

je n'ai pas la réputation de réponse à l'observation comme un commentaire.

ce n'est pas exactement le nombre de requêtes en vrac faites, c'est en fait le nombre total de fragments qui seront mis à jour sur un noeud donné par les appels en vrac. Cela signifie que le contenu des opérations en vrac réelles à l'intérieur de la demande en vrac importe réellement. Par exemple, si vous avez un seul noeud, avec un seul index, tournant sur un 8 core box, avec 60 shards et que vous émettez une requête en bloc qui a des opérations d'indexation qui affecte tous les 60 shards, vous obtiendrez ce message d'erreur avec une seule demande globale.

Si quelqu'un veut changer cela, vous pouvez voir le fractionnement passe à l'intérieur de org.elasticsearch.action.vrac.TransportBulkAction.executeBulk () à côté du commentaire "passez en revue toute la requête et créez un ShardId". Les requêtes individuelles se produisent quelques lignes vers le bas autour de la ligne 293 sur la version 1.2.1.

35
répondu deads2k 2014-07-21 18:53:17
la source

elasticsearch 1.3.4

notre système 8 de base * 2

4 vraquier chacun inscrire 300 000 message par 1 min => 20 000 par sec

je suis aussi cette exception! puis définissez config

elasticsearch.yml

threadpool.bulk.type: fixed
threadpool.bulk.size: 8                 # availableProcessors
threadpool.bulk.queue_size: 500

source

BulkRequestBuilder bulkRequest = es.getClient().prepareBulk();

bulkRequest.setReplicationType  (ReplicationType.ASYNC).setConsistencyLevel(WriteConsistencyLevel.ONE);

loop begin
bulkRequest.add(es.getClient().prepareIndex(esIndexName, esTypeName).setSource(document.getBytes    ("UTF-8")));
loop end

BulkResponse bulkResponse = bulkRequest.execute().actionGet();

4core => en vrac.taille 4

alors pas d'erreur

6
répondu sgsong 2014-11-24 09:32:48
la source

j'avais ce problème et ma solution a fini par augmenter ulimit -Sn et ulimit Hn pour l'utilisateur elasticsearch. Je suis passé de 1024 (par défaut) à 99999 et les choses ont été nettoyées.

2
répondu Nate Fox 2015-02-03 00:07:52
la source

Autres questions sur