Здравствуйте, при заливки данных в elastic возникли проблемы следующего типа. Elastic полностью съедает всю оперативную память на нодах с данными. Это происходит, когда в индексе более 150 миллионов документов и индекс достигает около 20-25Gb. В кластер Elasticа входят 2 ноды с данными (WIndows Server 2008 c 8GB RAM,
ES_HEAP_SIZE = 4096m, файл подкачки убран и т.д.). Пробовал различные настройки с индексом (увеличение памяти на индексирование и т.д.), но все равно рабочий набор памяти постоянно растет и съедает весь RAM. Эту проблему возможно решить настройками или надо поменять железо????
В следующий раз когда elasticsearch съест почти всю память, вы не могли бы запустить эти две команды и прислать сюда результат
curl "localhost:9200/_nodes/stats"
curl "localhost:9200/_nodes"
Здравствуйте, не смогу вынести статистику c кластера. Сейчас полностью изменил кластер 2 ноды с данными по 24GB каждая + 1 master с 8GB RAM. на всех машинах стоит Windows Server 2012. ES_HEAP_SIZE = 12Gb. Но при достижении 500 - 1000 млн. документов частный набор памяти около 14-15 GB и постоянно увеличивается. Хочу узнать может есть какие-то причины почему он не очищает память, может в самой JAVA надо что-то прописывать, чтобы память выгружалась???
Без статистики, сложно что-то сказать. Как минимум нужны следующие части из stats:
curl "localhost:9200/_nodes/jvm?pretty&human"
{
"nodes" : {
......
"tyPE2RfRQ-aZTGQYACWvfw" : {
"jvm" : {
"mem" : {
"heap_used" : "122.2mb",
"heap_used_in_bytes" : 128169296,
"heap_used_percent" : 12,
"heap_committed" : "247.5mb",
"heap_committed_in_bytes" : 259522560,
"heap_max" : "990.7mb",
"heap_max_in_bytes" : 1038876672,
"non_heap_used" : "47.9mb",
"non_heap_used_in_bytes" : 50330816,
"non_heap_committed" : "48.8mb",
"non_heap_committed_in_bytes" : 51204096,
......
},
"buffer_pools" : {
"direct" : {
"count" : 55,
"used" : "5.5mb",
"used_in_bytes" : 5798345,
"total_capacity" : "5.5mb",
"total_capacity_in_bytes" : 5798345
},
"mapped" : {
"count" : 0,
"used" : "0b",
"used_in_bytes" : 0,
"total_capacity" : "0b",
"total_capacity_in_bytes" : 0
}
}
.......
}
}
}
}
Игорь, здравствуйте. А это не может быть той же проблемой, как описано у тут (terms_in_memory) ?
Владимир, если не получается вынести статистику, то еще надо посмотреть как загружены кеши (особенно fielddata) и сколько памяти съедено сегментами (segments). В принципе, эта статистика обезличена, но может помочь получить представление сколько памяти из heap на что потрачено.
Память может утекать по многим причинам. Поэтому пытаться угадать причину утечки без статистики сложно. Может быть это и термины, а может и нет. На сколько я понял из описания, у Владимира проблема с non-heap памятью а не с heap, в котором кешируются термины, но хотелось бы посмотреть на статистику, чтобы знать точно.