首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch: elasticsearch.service的作业失败

Elasticsearch: elasticsearch.service的作业失败
EN

Stack Overflow用户
提问于 2019-11-01 09:19:04
回答 12查看 106.9K关注 0票数 47

我目前正在尝试为一个项目设置Elasticsearch。我已经安装了Elasticsearch 7.4.1,我还安装了Java,即openjdk 11.0.4

但是,当我尝试使用命令启动Elasticsearch

代码语言:javascript
复制
sudo systemctl start elasticsearch

我得到下面的错误

elasticsearch.service的作业失败,因为控制进程存在错误代码。 有关详细信息,请参阅"systemctl status elasticsearch.service“和"journalctl -xe”。

当我尝试运行命令时

代码语言:javascript
复制
systemctl status elasticsearch.service

我得到了错误信息

elasticsearch.service -弹性搜索 加载:已加载的(/usr/lib/systemd/system/elasticsearch.service;禁用; 活动:失败(结果:退出代码),从Fri 2019-11-01 06:09:54 UTC;12 博士:http://www.elastic.co 进程: 5960 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DI 主PID: 5960 (code=exited,状态=1/故障)

我已经从我的机器上删除/清除了Elasticsearch并重新安装了几次,但是它似乎没有解决这个问题。

我已经尝试将network.hosthost.port/etc/default/elasticsearch中的默认设置修改为network.host: 0.0.0.0http.port: 9200,以解决这个问题,但还没有成功。

我需要一些帮助。提前谢谢。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2019-11-01 09:19:04

,这是我如何解决的问题

首先,使用以下命令在纳米编辑器中打开/etc/elasticsearch/elasticsearch.yml

代码语言:javascript
复制
sudo nano /etc/elasticsearch/elasticsearch.yml

您的网络设置应该是:

代码语言:javascript
复制
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
#
# Set a custom port for HTTP:
#
http.port: 9200

为了使Elasticsearch允许来自本地主机的连接,还可以监听端口9200

接下来,运行下面的代码以确定错误的原因:

代码语言:javascript
复制
journalctl -xe

误差1

Java运行时环境没有足够的内存继续运行

溶液

作为JVM应用程序,Elasticsearch主服务器进程只使用专门用于JVM的内存。所需内存可能取决于所使用的JVM (32位或64位)。JVM使用的内存通常包括:

  • 堆空间(通过-Xms-Xmx配置)
  • metaspace (受可用本机内存数量的限制)
  • 内部JVM (通常是几十Mb)
  • 操作系统相关的内存特性,如内存映射文件

Elasticsearch主要依赖于堆内存,通过将-Xms-Xmx(堆空间)选项传递给运行该服务器的来手动进行此设置。

溶液

使用以下命令在纳米编辑器中打开/etc/elasticsearch/jvm.options

代码语言:javascript
复制
sudo nano /etc/elasticsearch/jvm.options

首先,不评论XmxXms的值。

接下来,将-Xms-Xmx的值修改为不超过物理内存的50%。这些设置的值取决于服务器上可用的RAM数量,Elasticsearch需要内存,而不是JVM堆,为此留出空间是很重要的。

最低要求:如果您的物理内存是<= 1 GB

那么,您的设置应该是:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms128m
-Xmx128m

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms256m
-Xmx256m

介质需求:如果物理内存为>= 2 GB<= 4 GB

那么,您的设置应该是:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms512m
-Xmx512m

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms750m
-Xmx750m

大型需求:如果您的物理内存是>= 4 GB<= 8 GB

那么,您的设置应该是:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1024m
-Xmx1024m

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms2048m
-Xmx2048m

注意事项:如果您的物理内存是>= 8 GB,您可以决定要为Elasticsearch分配多少堆空间。您可以根据可用资源分配-Xms2048m-Xmx2048m-Xms4g-Xmx4g或更高的性能,以获得更好的性能。

误差2

初始堆大小不等于最大堆大小

溶液

确保-XmsXmx的值相等。也就是说,您使用的是最低要求,因为您的物理内存是<= 1 GB,而不是这样:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms128m
-Xmx256m

应该是这样:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms128m
-Xmx128m

或者这个:

代码语言:javascript
复制
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms256m
-Xmx256m

误差3

默认的发现设置不适合生产使用;必须配置至少一个discovery.seed_hosts、discovery.seed_providers、cluster.initial_master_nodes。

溶液

使用以下命令在纳米编辑器中打开/etc/elasticsearch/elasticsearch.yml

代码语言:javascript
复制
sudo nano /etc/elasticsearch/elasticsearch.yml

您的发现设置应该是:

代码语言:javascript
复制
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.seed_hosts: []

一旦修复了所有错误,运行下面的命令来启动并确认Elasticsearch的状态

代码语言:javascript
复制
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch

就这样。

我希望这对有帮助

票数 120
EN

Stack Overflow用户

发布于 2020-06-10 14:14:54

小型虚拟机也有同样的问题。上述配置已经设置。唯一有帮助的是增加了启动超时时间。标准系统超时是不够的。

作为预防措施,我将超时设置为5分钟,如下所示。

代码语言:javascript
复制
sudo nano /usr/lib/systemd/system/elasticsearch.service

在elasticsearch.service文件中的服务部分下添加。

代码语言:javascript
复制
TimeoutStartSec=300

激活更改为服务。

代码语言:javascript
复制
sudo /bin/systemctl enable elasticsearch.service

重新开始服务。

代码语言:javascript
复制
service elasticsearch start
票数 11
EN

Stack Overflow用户

发布于 2022-03-31 08:50:57

这个问题的一个基本解决方案就是卸载Elasticsearch和Kibana,然后再重新安装它们,您的问题就会解决。

卸载Elasticsearch:

代码语言:javascript
复制
sudo apt-get remove --purge elasticsearch

传达的信息是:

dpkg:警告:删除elasticsearch时,目录'/var/lib/elasticsearch‘不为空,所以未删除 dpkg:警告:删除elasticsearch时,目录'/etc/elasticsearch‘不为空,所以未删除

还删除了这些目录:

代码语言:javascript
复制
sudo rm -rf /etc/elasticsearch
sudo rm -rf /var/lib/elasticsearch

然后再安装一次:

代码语言:javascript
复制
sudo apt-get install elasticsearch=7.10.1
sudo systemctl start elasticsearch
curl http://localhost:9200/

用于卸载Kibana:

代码语言:javascript
复制
sudo apt-get remove --purge kibana

还删除了这些目录:

代码语言:javascript
复制
sudo rm -rf /etc/kibana
sudo rm -rf /var/lib/kibana

然后再安装一次:

代码语言:javascript
复制
sudo apt-get install kibana=7.10.1
sudo systemctl start kibana

用于在浏览器上打开Kibana:

代码语言:javascript
复制
http://localhost:5601
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58656747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档