2016-01-12 4 views
6

Я пытаюсь установить elasticsearch на моей локальной машине Ubuntu далее руководство по адресу:Ubuntu - elasticsearch - Ошибка: Невозможно выделить память

https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html

, и при попытке запустить «./elasticsearch» , получили следующее сообщение об ошибке:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: <br> 

os::commit_memory(0x00007f0e50cc0000, 64075595776, 0) failed; <br> 

error='Cannot allocate memory' (errno=12) <br> 

There is insufficient memory for the Java Runtime Environment to continue.<br> 

Native memory allocation (mmap) failed to map 64075595776 bytes for committing reserved memory 

Здесь вы статистику памяти:

   total  used  free  shared buffers  cached 
Mem:  8113208 4104900 4008308  44244  318076 1926964 
-/+ buffers/cache: 1859860 6253348 
Swap:  7812092   0 7812092 

Сообщение об ошибке из журналов:

There is insufficient memory for the Java Runtime Environment to continue. 
# Native memory allocation (mmap) failed to map 64075595776 bytes for committing reserved memory. 
# Possible reasons: 
# The system is out of physical RAM or swap space 
# In 32 bit mode, the process size limit was hit 
# Possible solutions: 
# Reduce memory load on the system 
# Increase physical memory or swap space 
# Check if swap backing store is full 
# Use 64 bit Java on a 64 bit OS 
# Decrease Java heap size (-Xmx/-Xms) 
# Decrease number of Java threads 
# Decrease Java thread stack sizes (-Xss) 
# Set larger code cache with -XX:ReservedCodeCacheSize= 
# This output file may be truncated or incomplete. 
# 
# Out of Memory Error (os_linux.cpp:2627), pid=13021, tid=139764129740544 
# 
# JRE version: (8.0_66-b17) (build) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.66-b17 mixed mode linux-amd64) 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 

Уже попробовал предыдущую версию, установка из хранилищ с использованием уместна, ничего не получалось.

У кого-нибудь есть идеи, что может быть проблемой?

+0

У вас явно есть проблема с ОЗУ (т. Е. «Ошибка из памяти»). Посмотрите возможные варианты: я попробую «сначала уменьшить размер кучи Java (-Xmx/-Xms)». – Val

+0

@Var ничего не изменилось, опять же ошибка. Как память является проблемой, когда осталось 4g для использования. Нашел несколько других проблем, когда у людей была одна и та же проблема, но в их случае используемая память высока почти как общая память. – Cudoviste

+0

Как-то она пытается выделить больше, чем доступно. Помогает ли это? Https: //www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-configuration.html#vm-max-map-count – Val

ответ

8

Похоже, вы пытаетесь запустить ElasticSearch с настройками по умолчанию, которые пытаются установить размер стека 2Go. Если у вас нет этого бесплатного ... kaboom (тихо).

Посмотрите в /etc/elasticsearch/jvm.options и изменить следующие строки:

-Xms2g 
-Xmx2g 

к чему-то, что будет соответствовать вашей доступной памяти. Но имейте в виду, что ElasticSearch - большой бог памяти и хочет все. Вы не можете получить полезную систему под лимитом 2Go.

+1

Привет, у меня 4 ГБ оперативной памяти, и я не думаю, что я могу позволить себе более 1 ГБ для 'ElasticSearch'. Не будет ли «elasticsearch» хорошо работать в 1 ГБ бара? Если нет, почему так? – sphoenix

1

Прежде всего, Elasticsearch использует гибридную директорию mmapfs/niofs. Операционная система ограничивает количество mmap, обычно значение по умолчанию - 65536. Это может привести к исключениям из памяти. В Linux, вы можете увеличить это значение ядра по умолчанию, выполнив следующую команду как корень:

sysctl -w vm.max_map_count=262144 

Или постоянно, обновляя настройки vm.max_map_count в /etc/sysctl.conf. Кроме того, можно изменить с помощью следующей команды:

echo 262144 > /proc/sys/vm/max_map_count 

Для получения дополнительной информации, пожалуйста, проверьте Linux kernel documentation:

max_map_count: This file contains the maximum number of memory map areas a process may have. Memory map areas are used as a side-effect of calling malloc, directly by mmap and mprotect, and also when loading shared libraries. While most applications need less than a thousand maps, certain programs, particularly malloc debuggers, may consume lots of them, e.g., up to one or two maps per allocation. The default value is 65536.

Вторая вещь, которую вы должны принять во внимание, JVM Минимальный размер кучи и максимальный размер кучи. Вы можете изменить эти значения на своем компьютере в /etc/elasticsearch/jvm.options. Чтобы выбрать подходящие значения, вы можете найти хорошие правила на Elastic set JVM heap size page.

Смежные вопросы