下面是根据[1]修改的

修改的文件文件 修改内容
/etc/security/limits.conf

appleyuchi soft nofile 65536
appleyuchi hard nofile 65536
appleyuchi soft nproc 32000
appleyuchi hard nproc 32000
appleyuchi soft memlock unlimited
appleyuchi hard memlock unlimited

或者上面的appleyuchi全部改成*

需要注销后生效

/etc/sysctl.conf

vm.max_map_count=262144

vm.swappiness=0

生效命令

sysctl -p


##############################################################################################################################################

经过测试无效的方案

[2]中说修改jvm.options中的Xms与Xmx 的大小为512m(无效)

[3]中说修改 /usr/lib/systemd/system/ elasticsearch.service(这个应该是适合于deb方式安装的)

[4]说是一个新装的插件问题不支持es导致的

[7]中提到/etc/systemd/system.conf

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service

确认重启后无效

##############################################################################################################################################

一种逃避现实的方法

[5]中提到

bootstrap.memory_lock: false

然后这个报错就不见了.

但是这样会启动交换内存(也就是会把硬盘上的空间借用过来当做虚拟内存,所以不算完美解决)

Reference

[1]docker Elasticsearch Unable to lock JVM Memory: error=12, reason=Cannot allocate memory

[2]docker启动elasticsearch失败–jvm内存不足解决方案

[3]elasticsearchUnable to lock JVM Memory: error=12--elasticsearch

[4]elasticsearch报错[WARN ][bootstrap ] Unable to lock JVM Memory: error=12,reason=Cannot allocate memory,解决

[5]ES安装的那些坑

[6]bootstrap.memory_lock: true导致Elasticsearch启动失败问题

[7]记录一次Ubuntu16.04上安装Elasticsearch踩的坑,memory lock问题\

修改的文件文件 修改内容 /etc/security/limits.conf hard nofile 80000 soft nofile 80000 /etc/sysctl.conf vm.max_map_count=262144 Reference:[1]docker Elasticsearch Unable to lock JVM Memory: error=12, reason=Cannot allocate memory... 我们首先浏览一个骨架 Eclipse 项目。 我们使用 XMind 的思维导图技术探索需求。 然后我们将需求从 XMind 导出到 *.feature 文件中。 我们使用 Cucumber-jvm 生成骨架测试步骤定义。 我们实现测试定义并改进我们的代码 API,直到测试用例通过。 我们详细说明支持更复杂的测试用例的要求。 在这里,我们学习了 BDD Gherkin 语言的更复杂用法。 [步骤 6] ( ) 让我们将代码移动到 spring 并在 spring 中运行Cucumber。 让我们在 Web 容器中运行代码,并通过 Selenium IDE 在浏览器上执行 BDD。
elasticsearch问题处理一例 [WARN ][o.e.b.JNANatives ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory [WARN ][o.e.b.JNANatives ] This can result in part of the JVM be...
1:文件在编辑时突然关闭,会产生一个swp文件, 再次打开时,首先恢复文件,vim -r filename.c     其次:删除swp文件, ls -a 查看隐藏文件   rm -rf .filename.c   (隐藏文件以点开头) 2:es启动时报错:[2017-04-20T21:45:36,741][WARN ][o.e.b.JNANatives ] Unable to lock JVM ...
Elasticsearch 本文主要记录了如何在单机下通过docker-compsoe搭建Elasticsearch集群和相关插件。包含了:es集群(6.7.0)+ik分词器+kibana+head插件。 更多文章欢迎访问我的个人博客–>幻境云图 1. 概述 Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百...
es集群扩容时,启动遇到报错: [2021-09-15T15:58:07,897][WARN ][o.e.b.JNANatives ] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory [2021-09-15T15:58:07,901][WARN ][o.e.b.JNANatives ] This can result in part of the JVM being swapped out...
创建以下Elasticsearch7.2容器遇到报错信息:Unable to lock JVM Memory: error=12, reason=Cannot allocate memory docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -v /home/data/es/config/es.yml:/usr/share/elasticsea...
sysctl -w vm.max_map_count=<number of memory maps> #default is 65536 sysctl -w vm.max_map_count=262144 其他内核参数优化调整 net.nf_conntrack_max = 6553600 net.ipv6.conf.all.disable_i IP cluster.name node.name 相关软件 192.168.1.11 es_log es_1 elasticsearch、logstash、kibana、httpd 192.168.1.12 es_log es_2 elasticsearch 192.168.1.13 es_log es_3 elasticsearch、logstash 1.2 安装Java运行环境JRE wget -c -
note: picked up jdk_java_options: --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base
/java.io=all-unnamed --add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED 这是一条命令,用于设置 JDK 的 Java 选项。其中,--add-opens 参数用于打开指定模块的包,以便其他模块可以访问它们。这里指定了三个模块:java.base、java.io 和 java.rmi。ALL-UNNAMED 表示打开这些模块中所有未命名的包。 ### 回答2: 在Java应用程序中,我们可以使用JDK来编写和运行代码。在运行JDK时,可能需要使用某些选项来控制它的行为。例如,在运行Java虚拟机时,我们可以添加一些选项来指定JVM的行为,以满足我们的需求。 在这里,我们提到的选项是“picked up jdk_java_options: --add-opens=java.base/java.lang=all-unnamed --add-opens=java.base”。这个选项的作用是打开一些Java模块的深层命名空间,确保它们的访问正确而安全。对于不熟悉Java模块化系统的读者,这可能听起来很困惑,让我们进一步解释。 JDK 9引入了Java模块化系统,它允许将代码组织成离散、可重用和可测试的单元。Java模块可以定义和隔离它们自己的API和实现细节,并将其公开给其他模块。这有助于减少Java应用程序中的依赖和耦合,从而提高了应用程序的健壮性和可维护性。 然而,Java模块化系统引入了一些新的访问控制机制,如模块路径和模块化关键字。这些机制有时会导致某些模块无法加载或访问。在这种情况下,“--add-opens”选项可以打开深层命名空间,以确保所有的模块都能够被正确加载和访问。 具体来说,“--add-opens=java.base/java.lang=all-unnamed --add-opens=java.base”选项打开了java.base模块的所有Java.lang包的未命名访问层级。这意味着包中的所有类都可以被其他模块访问,而不需要将Java.lang包的任何内容导出到外部世界。 总之,“--add-opens”选项在一些情况下是必要的,可以确保Java应用程序中的所有模块被正确加载和访问。然而,在使用此选项时,需要谨慎,并确保了解其背后的原因和实现细节。 ### 回答3: 这段话涉及到了JDK的Java选项中的add-opens参数。add-opens参数是JDK 9中引入的一项新功能,用于控制Java程序在运行时能够打开哪些包以便运行。它主要用于解决在新的模块化系统中,由于禁止在模块外部访问模块内部的包,导致一些老代码无法正常运行的问题。 具体来说,add-opens参数可以通过以下方式使用: --add-opens=module/package=othermodule(,othermodule)* 其中,module表示需要打开的模块,package表示需要打开的包,othermodule表示可以访问该模块内部包的其他模块。可以通过逗号分隔来指定多个模块或其他模块。 在这段话中,选项为--add-opens=java.base/java.lang=all-unnamed --add-opens=java.base。意思是打开java.base模块中所有未命名的java.lang包以及整个java.base模块。这样做是为了解决一些第三方库在运行时需要访问java.base模块中的一些类或方法,但在JDK 9之后由于模块化限制而无法访问。 综上,add-opens参数是JDK 9中新增的一个功能,可以用于控制Java程序在运行时打开哪些包以便运行。通过指定模块、包和其他模块的方式,可以解决一些老代码在模块化系统下无法正常运行的问题。在这段话中,指定了打开java.base模块中所有未命名的java.lang包以及整个java.base模块,以便确保第三方库能够正常运行。