2016-01-12 6 views
6

bellek ayrılamıyor: deneyin './elasticsearch' ne zaman çalıştırılacağınıUbuntu - elasticsearch - Hata: Ben de benim yerel Ubuntu makine aşağıdaki kılavuz üzerinde <strong>elasticsearch</strong> yüklemeye çalışıyorum

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

ve

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 
İşte

hafıza istatistikleri:

   total  used  free  shared buffers  cached 
Mem:  8113208 4104900 4008308  44244  318076 1926964 
-/+ buffers/cache: 1859860 6253348 
Swap:  7812092   0 7812092 
aşağıdaki hata var günlüklerinden

Hata mesajı:

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 

Zaten, daha önceki bir sürümünü denedik apt kullanarak depolarından yükleme, hiçbir şey çalıştı.

Sorunun ne olabileceği hakkında bir fikri olan var mı? Eğer 2Go bir yığın boyutunu ayarlamak girişiminde varsayılan seçenekleri ile ElasticSearch başlatmaya çalışıyoruz gibi

+0

Açıkça bir RAM sorununuz var (ör. Bellek Yetersiz Hata). Olası çözümlere bakın: Önce Java yığın boyutunu (-Xmx/-Xms) 'yi azaltmayı denerim. – Val

+0

@Var hiçbir şey değişmedi, yine aynı hata. Kullanılacak 4g kaldığında bellek nasıl bir problemdir. İnsanların aynı probleme sahip olduğu diğer birkaç problemi de bulmuştum, fakat kullanılan bellekte bellek neredeyse toplam bellek kadar yüksek – Cudoviste

+0

Her nasılsa, mevcut olandan daha fazlasını tahsis etmeye çalışır. Bu yardımcı olur mu? Https: //www.elastic.co/guide/en/elasticsearch/reference/2.1/setup-configuration.html#vm-max-map-count – Val

cevap

8

görünüyor. Eğer özgürlüğüne sahip değilseniz ... kaboom (sessizce). Kullanılabilir bellekte sığacak bir şey

-Xms2g 
-Xmx2g 

:

hatları /etc/elasticsearch/jvm.options bir göz ve değiştirmek. Fakat ElasticSearch'ün büyük bir büyük bellek çenesi olduğunu ve herşeyi istediğini unutmayın. 2Go limitinin altında kullanışlı bir sistem alamazsınız.

+1

Merhaba, 4GB ram var ve 1GB'tan fazla "ElasticSearch" a sahip olduğumu düşünmüyorum. Elasticsearch '1GB ramda iyi performans göstermez mi? Değilse neden olmasın? – sphoenix

1

Her şeyden önce, Elasticsearch bir melez mmapfs/niofs dizini kullanır. İşletim sistemi mmap sayımlarını sınırlar, genellikle varsayılan değer 65536'dır. Bellek dışı istisnalarla sonuçlanabilir. /etc/sysctl.conf yılında vm.max_map_count ayarını güncelleyerek, kalıcı

sysctl -w vm.max_map_count=262144 

Veya: Linux'ta , root olarak aşağıdaki komutu çalıştırarak bu varsayılan çekirdek değerini artırabilir. Ayrıca aşağıdaki komutla değiştirebilirsiniz:

echo 262144 > /proc/sys/vm/max_map_count 

fazla bilgi için, Linux kernel documentation kontrol edin: Eğer dikkate almalıdır

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.

ikinci şey JVM asgari yığın boyutu ve maksimum yığın boyutudur. Bu değerleri makinenizde /etc/elasticsearch/jvm.options adresinde değiştirebilirsiniz. Uygun değerleri seçmek için Elastic set JVM heap size page numaralı telefondan iyi kurallar bulabilirsiniz.