logstash错误记录

运行logstash出现error=Cannotallocatememory(errno=12) 

出现的错误指的是无法分配内存

The problem is inherent with the way Java allocates memory when
executing processes. When then exec(). Forking creates a child process
by duplicating the current process. By duplicating the current
process, the new child process will request approximately the same
amount of memory as its parent process, essentially doubling the
memory required. However, this does not mean all the memory allocated
will be used, as exec() is immediately called to execute the different
code within the child process, freeing up this memory. As an example,
when Stash tries to locate git, the Stash JVM process must be forked,
approximately doubling the memory required by Stash.

解决方案呢有两个,第一个是用别的方法(例如 posix_spawn)替换掉 Java 的 fork/exec 方法从而申请到内存,第二个是开启系统的 Over-commit,跳过系统的可用内存检查直接分配。

临时: echo 1 > /proc/sys/vm/overcommit_memory
永久更改: 编辑 /etc/sysctl.conf,修改参数 vm.overcommit_memory = 1,重启服务器或者用户重新登录

你可能感兴趣的:(elasticsearch)