环境变量导致的elasticsearch启动错误

网上的解决办法都是修改/etc/security/limits.conf文件,增加hadoop hard nofile 131072一行

vi /etc/security/limits.conf
hadoop soft nofile 65536
hadoop hard nofile 131072
hadoop soft nproc 2048
hadoop hard nproc 4096

可是,我的配置本来就已经设置成这样了的
网上找来找去,都是修改limits.conf文件这个答案,最怕这种了,所有的人都指向同一个答案,却不能解决自己的问题
后来突然想到是不是环境变量的问题,仔细检查了一遍,发现一个可疑的设置

vi /etc/profile
ulimit -n 65535

使用 ulimit -Hn 查看当前值,果然是65535,

ulimit -Hn
65535

也就是说每次更新环境变量的时候limits.conf的hard nofile 131072设置被覆盖掉了
这就好办了,vi /etc/profile 将 ulimit -n 65535 行注释掉,退出重新进入当前用户,再使用 ulimit -Hn 查看当前值,已经是131072了,设置成功!

vi /etc/profile
# ulimit -n 65535
ulimit -Hn
131072

1、切换到root用户修改配置sysctl.conf

vi /etc/sysctl.conf 

添加下面配置:

vm.max_map_count=655360

并执行命令:

sysctl -p

再去启动elasticsearch,OK!