本站以分享各种运维经验和运维所需要的技能为主
《python零基础入门》:python零基础入门学习
《python运维脚本》: python运维脚本实践
《shell》:shell学习
《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战
《k8》暂未更新
《docker学习》暂未更新
《ceph学习》ceph日常问题解决分享
《日志收集》ELK+各种中间件
《运维日常》运维日常
《linux》运维面试100问
【es】es拉起不来,报内存错误,需要进行参数优化
报错内容:
There is insufficient memory for the Java Runtime Environment to continue
4月 22 14:33:27 systemd-entrypoint[7077]: # There is insufficient memory for the Java Runtime Environment to continue.
4月 22 14:33:27 systemd-entrypoint[7077]: # Native memory allocation (mmap) failed to map 33285996544 bytes for committing reserved memory.
4月 22 14:33:27 systemd-entrypoint[7077]: # An error report file with more information is saved as:
4月 22 14:33:27 systemd-entrypoint[7077]: # /tmp/hs_err_pid7128.log
4月 22 14:33:27 systemd-entrypoint[7077]: error:
4月 22 14:33:27 systemd-entrypoint[7077]: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000001001000000, 33285996544, 0) failed; error='Not e
优化
es的安装和配置是非常轻量级的,为满足多种不同的应用场景,底层提供多种数据结构支持,并做了大量的默认配置优化,部分配置针对具体的用户使用场景可能是冗余的,甚至可能造成性能的下降,需要根据实际业务场景做适当取舍,我们结合自身使用场景做了如下优化(文章中有疏漏或不正确的地方也欢迎点评指正)。
一、环境配置
sudo swapoff -a # 禁用swapping,开启服务器虚拟内存交换功能会对es产生致命的打击 vm.max_map_count # 在/etc/sysctl.conf文件中找到该参数,修改为655300后 执行sysctl -p,不然启动时会报值太小
二、内存优化
常用的配置在两个文件里,分别是 elasticsearch.yml 和 jvm.options(配置内存)
jvm.options主要是进行内存相关配置,elasticsearch默认给的1g,官方建议分配给es的内存不要超出系统内存的50%,预留一半给Lucene,因为Lucene会缓存segment数据提升检索性能;内存配置不要超过32g,如果你的服务器内存没有远远超过64g,那么不建议将es的jvm内存设置为32g,因为超过32g后每个jvm对象指针的长度会翻倍,导致内存与cpu的开销增大。
-Xms10g -Xmx10g
一般都是设置相同的值。