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"
}
}
}
}
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.
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