elasticsearch启动报错: Native controller process has stopped - no new native processes can be started

博客介绍了在Linux环境下,当Elasticsearch启动报错'Native controller process has stopped - no new native processes can be started'时的解决方法。问题源于用户进程限制,解决方式是修改系统配置文件,将elasticsearch用户的nproc限制设置为4096,以允许更多进程启动。

问题:

[2018-12-12T21:54:57,353][INFO ][o.e.n.Node               ] [PlbSkhz] stopping ...

[2018-12-12T21:54:57,413][INFO ][o.e.n.Node               ] [PlbSkhz] stopped

[2018-12-12T21:54:57,413][INFO ][o.e.n.Node               ] [PlbSkhz] closing ...

[2018-12-12T21:54:57,473][INFO ][o.e.n.Node               ] [PlbSkhz] closed

[2018-12-12T21:54:57,488][INFO ][o.e.x.m.j.p.NativeController] [PlbSkhz] Native controller process has stopped - no new native processes can be started

解决办法:

[root@localhost ~]# vim /etc/security/limits.conf
在文件的末尾加上
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096

注:elasticsearch 为启动es的用户名

[root@localhost ~]# cd /etc/security/limits.d
[root@localhost limits.d]# ll
total 4
-rw-r--r--. 1 root root 191 Nov  6  2019 90-nproc.conf
[root@localhost limits.d]# vim 90-nproc.conf 

 注:跟上面包名一致

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

*          soft    nproc     4096

root       soft    nproc     unlimited

~                                                                                                                            

~  

 

将上面内容的*号改成启动es的用户名

# See rhbz #432903 for reasoning.

 

elasticsearch soft    nproc     4096

root       soft    nproc     unlimited

修改下面文件加上内容

[root@localhost security]# vi /etc/sysctl.conf 
vm.max_map_count = 655360
在文件最底部加上上面内容
[root@localhost security]# sysctl -p
查看是否填加成功
vm.max_map_count = 655360

 

### 解决Elasticsearch启动错误 `java.lang.IllegalStateException` 当遇到`org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException:` 错误提示未能获取节点锁时,这通常意味着指定的数据目录不可写入或者存在多个实例尝试在同一位置锁定文件[^1]。 对于具体报错信息中的“No match found”,可能是因为正则表达式匹配失败或者是配置文件路径设置不正确引起的。然而,在当前上下文中更贴切的原因可能是由于数据存储路径权限不足或已有其他进程占用该路径造成的无法获得独占访问权的情况。 #### 可能原因分析 - 数据目录权限不够:如果运行 Elasticsearch 的用户没有足够的权限来读取、写入 `/home/elasticsearch-6.3.0/data/elasticsearch` 文件夹,则会触发此异常。 - 多个节点竞争同一数据目录:默认情况下,单台机器上只允许一个 Elasticsearch 实例绑定到给定的数据目录;如果有超过一个的服务试图这样做而未调整参数 `node.max_local_storage_nodes` ,也会抛出同样的异常。 #### 推荐解决方案 为了修复这个问题: - **检查并修正数据目录权限** 确保用于启动服务的账户拥有对上述提到的数据目录及其子文件夹完整的控制权限。可以通过命令行工具修改相应文件夹属性实现这一点。 ```bash sudo chown -R elasticsearch:elasticsearch /home/elasticsearch-6.3.0/data/elasticsearch/ ``` - **确认是否有重复实例正在运行** 有时旧版本的服务可能会残留后台继续执行从而阻止新安装正常工作。可以先停止所有已知的相关进程再重新尝试开启新的实例。 - **适当增加本地存储节点数量限制(仅适用于多节点部署场景)** 编辑配置文件 `elasticsearch.yml` 并找到选项 `node.max_local_storage_nodes` 。将其值设为大于现有实际使用的节点数目即可解决问题。 ```yaml path.data: /home/elasticsearch-6.3.0/data/elasticsearch/ node.max_local_storage_nodes: 2 # 或者更大数值取决于需求 ``` 完成以上操作之后重启 Elasticsearch 应用程序应该能够恢复正常运作状态。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值