Проблемы с ram


(Владимир) #1

Здравствуйте, при заливки данных в elastic возникли проблемы следующего типа. Elastic полностью съедает всю оперативную память на нодах с данными. Это происходит, когда в индексе более 150 миллионов документов и индекс достигает около 20-25Gb. В кластер Elasticа входят 2 ноды с данными (WIndows Server 2008 c 8GB RAM,
ES_HEAP_SIZE = 4096m, файл подкачки убран и т.д.). Пробовал различные настройки с индексом (увеличение памяти на индексирование и т.д.), но все равно рабочий набор памяти постоянно растет и съедает весь RAM. Эту проблему возможно решить настройками или надо поменять железо????


(Igor Motov) #2

В следующий раз когда elasticsearch съест почти всю память, вы не могли бы запустить эти две команды и прислать сюда результат

curl "localhost:9200/_nodes/stats"
curl "localhost:9200/_nodes"


(Владимир) #3

Здравствуйте, не смогу вынести статистику c кластера. Сейчас полностью изменил кластер 2 ноды с данными по 24GB каждая + 1 master с 8GB RAM. на всех машинах стоит Windows Server 2012. ES_HEAP_SIZE = 12Gb. Но при достижении 500 - 1000 млн. документов частный набор памяти около 14-15 GB и постоянно увеличивается. Хочу узнать может есть какие-то причины почему он не очищает память, может в самой JAVA надо что-то прописывать, чтобы память выгружалась???


(Igor Motov) #4

Без статистики, сложно что-то сказать. Как минимум нужны следующие части из 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
          }
        }
        .......
      }
    }
  }
}

#5

Игорь, здравствуйте. А это не может быть той же проблемой, как описано у тут (terms_in_memory) ?


#6

Владимир, если не получается вынести статистику, то еще надо посмотреть как загружены кеши (особенно fielddata) и сколько памяти съедено сегментами (segments). В принципе, эта статистика обезличена, но может помочь получить представление сколько памяти из heap на что потрачено.


(Igor Motov) #7

Память может утекать по многим причинам. Поэтому пытаться угадать причину утечки без статистики сложно. Может быть это и термины, а может и нет. На сколько я понял из описания, у Владимира проблема с non-heap памятью а не с heap, в котором кешируются термины, но хотелось бы посмотреть на статистику, чтобы знать точно.


(system) #8