web-dev-qa-db-fra.com

Elasticsearch OutOfMemoryError Java heap space

J'utilise 8 cœurs, 32g RAM noeud elasticsearch avec 5 fragments, 400 millions (petits) documents.

Tout fonctionne très bien jusqu'à ce que je lance une recherche d'agg, puis les fragments commencent à échouer avec:

Java.lang.OutOfMemoryError: Java heap space

J'ai taille de segment modifiée avec: export ES_HEAP_SIZE=16g (aussi ES_MAX_MEM et ES_MIN_MEM au même)

a également modifié le fichier yml pour elasticsearch:

bootstrap.mlockall: true

et même (recommandé par les documents d'installation):

Sudo sysctl -w vm.max_map_count=262144

Redémarrez le service et toujours pas aucun impact, toujours Java.lang.OutOfMemoryError: Java heap space

D'autres suggestions? autre que ne pas exécuter de requêtes agg?

la requête est:

https://localhost:9200/my_index_name/_search?search_type=count
{
  "aggs": {
    "distinct_hostname": {
      "cardinality": {
        "field": "hostname"
      }
    }
  }
}
23
B.P

Je pense avoir découvert l'erreur. J'utilisais "service" pour exécuter elasticsearch et mes variables d'environnement ont donc été supprimées. J'ai dû mettre à jour le /etc/default/elasticsearch fichier avec les variables env correctes (en particulier le ES_HEAP_SIZE=16g).

Jusqu'à présent, cela fonctionne bien et l'application ne fait pas d'erreur.

19
B.P

La façon correcte de mettre à jour Java pour Elasticsearch 5 n'est pas EXPORT _Java_OPTIONS ou EXPORT ES_HEAP_SIZE ou en utilisant les paramètres de ligne de commande. Pour autant que je sache, tous ces éléments sont remplacés par un fichier de configuration dans votre répertoire d'installation Elasticsearch, config/jvm.options. Pour modifier ces paramètres, vous devez modifier ces lignes dans ce fichier:

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms2g
-Xmx2g
5
Craig