【源码阅读】修改elasticsearch源码并且编译打包

前言

相信很多人在启动elasticsearch 5版本以上的应用过程中曾被以下错误终止启动了。

max virtual memory areas vm.max_map_count [%d] is too low, increase to
at least [%d]

下面我们尝试修改elasticsearch源码跳过这个限制。。。为啥会有这个想法,因为有时候我们单纯下载到docker镜像里面跑一下学习一下而已,不想修改宿主机配置或者不便于修改宿主机配置。虽然装elasticsearch 2版本没这个错误提示,但是系列比较老了,没法体验新版elasticsearch的特性。下面我们来尝试这个操作来熟悉elasticsearch源码修改并且编译打包过程,一方面能熟悉elasticsearch打包流程,另外也方便后续调试和阅读elasticsearch代码。

实践环境

  1. Mac 其他系统流程类似。
  2. IDEA
  3. elasticsearch 6.6.2 源码下载地址 https://download.csdn.net/download/bojie5744/11236495
    (更多版本源码查看 https://github.com/elastic/elasticsearch/releases )
  4. openjdk-11 编译elasticsearch 6.6.2源码的要求,不然会报错 At least Java 11 is required 。下载地址: https://download.csdn.net/download/aqtata/10687785 (dmg安装包,CSDN下载比较快,官网比较慢)
    在这里插入图片描述

使用idea导入项目

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

发现提示错误,You must run gradle idea from the root of elasticsearch before importing into IntelliJ ,也就是我们在导入项目前需要先在项目根目录执行./gradlew idea 命令。

执行java -version看看是不是已经是java 11了,如果不是,那么我们需要先执行 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home 设置java环境,然后再执行./gradlew idea
在这里插入图片描述
在这里插入图片描述
执行完毕,回去刷新build状态,可以看到全部都绿色打勾了。
在这里插入图片描述

修改源码代码

在工程通过搜索max virtual memory areas vm.max_map_count 找到目标java文件。

在这里插入图片描述
把红色框框的注释掉。
在这里插入图片描述

打包源码

./gradlew assemble --parallel

在这里插入图片描述
完毕后,我们可以把该打包源码部署到其他的机器上,解压后执行./bin/elasticsearch就会发现原本有max_map_count限制的错误提示没有了,程序也启动起来了。

原创文章 54 获赞 168 访问量 63万+

猜你喜欢

转载自blog.csdn.net/bojie5744/article/details/91485080
今日推荐