2016-01-12 15 views
6

Próbuję zainstalować elasticsearch na moim lokalnym Ubuntu Maszyna po prowadnicy w:Ubuntu - elasticsearch - Błąd: Nie można przydzielić pamięci

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

, a gdy próbuję uruchomić './elasticsearch' , mam następujący błąd:

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 

Oto statystyki pamięć:

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

Komunikat o błędzie z dzienników:

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 

już próbował wcześniejszej wersji, instalacja z wykorzystaniem repozytoriów apt, nic nie działało.

Ktoś ma pojęcie, jaki może być problem?

+0

Masz wyraźnie problem z pamięcią RAM (np. 'Błąd braku pamięci'). Zobacz możliwe rozwiązania: Najpierw spróbuję 'Zmniejsz rozmiar sterty Java (-Xmx/-Xms)'. – Val

+0

@Var nic się nie zmieniło, ten sam błąd ponownie. Jak pamięć jest problemem, kiedy pozostaje 4g do użycia. Znalazłem kilka innych problemów, w których ludzie mieli ten sam problem, ale w ich przypadku wykorzystywana pamięć jest wysoka prawie jak całkowita pamięć. – Cudoviste

+0

W jakiś sposób stara się przydzielić więcej niż to, co jest dostępne. Czy to pomaga? Https://www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-configuration.html#vm-max-map-count – Val

Odpowiedz

8

Wygląda na to, że próbujesz uruchomić ElasticSearch z opcjami domyślnymi, które próbują ustawić rozmiar stosu 2Go. Jeśli nie masz tego za darmo ... kaboom (cicho).

Sprawdźcie w /etc/elasticsearch/jvm.options i zmodyfikować linie:

-Xms2g 
-Xmx2g 

do czegoś, co zmieści się w dostępnej pamięci. Ale pamiętaj, że ElasticSearch to świetny wielki świr pamięci i chce tego wszystkiego. Możesz nie uzyskać przydatnego systemu w ramach limitu 2Go.

+1

Witam, mam 4GB pamięci RAM i nie sądzę, żebym mógł pozwolić sobie na więcej niż 1 GB na 'ElasticSearch'. Czy funkcja "elasticsearch" nie sprawdzi się w pamięci RAM o pojemności 1 GB? Jeśli nie, dlaczego tak? – sphoenix

1

Po pierwsze, Elasticsearch używa hybrydowego katalogu mmapfs/niofs. Limity systemu operacyjnego liczone są w mmap, zwykle wartość domyślna to 65536. Może to spowodować wyjątki poza pamięcią. W systemie Linux można zwiększyć tę wartość domyślną jądra uruchamiając następujące polecenie jako root:

sysctl -w vm.max_map_count=262144 

lub na stałe, aktualizując ustawienia vm.max_map_count w /etc/sysctl.conf. Można również zmienić za pomocą następującego polecenia:

echo 262144 > /proc/sys/vm/max_map_count 

Aby uzyskać więcej informacji, proszę sprawdzić 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.

Drugą rzeczą, którą należy wziąć pod uwagę, jest minimalny rozmiar sterty JVM i maksymalny rozmiar sterty. Możesz zmienić te wartości na swoim komputerze w /etc/elasticsearch/jvm.options. Aby wybrać odpowiednie wartości, można znaleźć dobre zasady dotyczące kciuków na Elastic set JVM heap size page.