我目前正在尝试为一个项目设置Elasticsearch。我已经安装Elasticsearch 7.4.1并且还安装了Java,即openjdk 11.0.4.
但是当我尝试使用命令启动Elasticsearch 时
sudo systemctl start elasticsearch
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
elasticsearch.service 的作业失败,因为控制进程退出并显示错误代码。
有关详细信息,请参阅“systemctl status elasticsearch.service”和“journalctl -xe”。
当我尝试运行命令时
systemctl status elasticsearch.service
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
? elasticsearch.service - 弹性搜索
已加载:已加载(/usr/lib/systemd/system/elasticsearch.service; 已禁用; 出售
活动:自 UTC 时间周五 2019-11-01 06:09:54 起失败(结果:退出代码);12 秒前
Run Code Online (Sandbox Code Playgroud)Docs: http://www.elastic.co进程:5960 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DI
主PID:5960(代码=退出,状态=1/FAILURE)
我已经从我的机器上删除/清除了Elasticsearch并重新安装了几次,但它似乎没有解决问题。
我试图修改默认network.host,并host.port设置在/etc/default/elasticsearch以network.host: 0.0.0.0和http.port: 9200解决这个问题,但还没有运气。
我需要一些帮助。提前致谢。
Pro*_*ton 78
这是我解决的方法
首先,/etc/elasticsearch/elasticsearch.yml使用以下命令在您的 nano 编辑器中打开:
sudo nano /etc/elasticsearch/elasticsearch.yml
Run Code Online (Sandbox Code Playgroud)
您的网络设置应该是:
# 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
Run Code Online (Sandbox Code Playgroud)
为了让Elasticsearch允许来自 localhost 的连接,并监听端口9200。
接下来,运行下面的代码来确定错误的原因:
journalctl -xe
Run Code Online (Sandbox Code Playgroud)
错误 1
Java 运行时环境的内存不足,无法继续
解决方案
作为 JVM 应用程序,Elasticsearch主服务器进程仅使用专用于 JVM 的内存。所需的内存可能取决于所使用的 JVM(32 位或 64 位)。JVM 使用的内存通常包括:
-Xms和配置-Xmx)Elasticsearch 主要依赖于堆内存,并且通过将-Xmsand -Xmx(堆空间)选项传递给运行Elasticsearch服务器的 JVM 来手动设置。
解决方案
/etc/elasticsearch/jvm.options使用以下命令在您的 nano 编辑器中打开:
sudo nano /etc/elasticsearch/jvm.options
Run Code Online (Sandbox Code Playgroud)
首先,取消注释的价值Xmx和Xms
接下来,修改的价值-Xms和-Xmx你的物理内存不超过50%。这些设置的值取决于服务器上可用的 RAM 量,Elasticsearch 需要内存用于 JVM 堆以外的用途,为此留出空间很重要。
最低要求:如果您的物理 RAM <= 1 GB
然后,您的设置应该是:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms128m
-Xmx128m
Run Code Online (Sandbox Code Playgroud)
或者
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms256m
-Xmx256m
Run Code Online (Sandbox Code Playgroud)
中等要求:如果您的物理 RAM >= 2 GB但<= 4 GB
然后,您的设置应该是:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms512m
-Xmx512m
Run Code Online (Sandbox Code Playgroud)
或者
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms750m
-Xmx750m
Run Code Online (Sandbox Code Playgroud)
大要求:如果您的物理 RAM >= 4 GB但<= 8 GB
然后,您的设置应该是:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1024m
-Xmx1024m
Run Code Online (Sandbox Code Playgroud)
或者
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms2048m
-Xmx2048m
Run Code Online (Sandbox Code Playgroud)
注意:如果您的物理 RAM >= 8 GB,您可以决定要分配多少堆空间给 Elasticsearch。您可以分配-Xms2048m和-Xmx2048mOR-Xms4g和-Xmx4g或根据可用资源,获得更好的性能甚至更高。
错误 2
初始堆大小不等于最大堆大小
解决方案
确保的值-Xms和Xmx是相等的。也就是说,您使用的是最低要求,因为您的物理 RAM <= 1 GB,而不是这样:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms128m
-Xmx256m
Run Code Online (Sandbox Code Playgroud)
应该是这样的:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms128m
-Xmx128m
Run Code Online (Sandbox Code Playgroud)
或这个:
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms256m
-Xmx256m
Run Code Online (Sandbox Code Playgroud)
错误 3
默认发现设置不适合生产使用;必须至少配置 [discovery.seed_hosts、discovery.seed_providers、cluster.initial_master_nodes] 之一
解决方案
/etc/elasticsearch/elasticsearch.yml使用以下命令在您的 nano 编辑器中打开:
sudo nano /etc/elasticsearch/elasticsearch.yml
Run Code Online (Sandbox Code Playgroud)
您的发现设置应该是:
# 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: []
Run Code Online (Sandbox Code Playgroud)
修复所有错误后,运行以下命令以启动并确认Elasticsearch的状态:
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
Run Code Online (Sandbox Code Playgroud)
就这样。
我希望这有帮助
ash*_*rla 14
此问题的基本解决方案是卸载 Elasticsearch 和 Kibana,然后重新安装它们,您的问题就会得到解决。
卸载 Elasticsearch:
sudo apt-get remove --purge elasticsearch
Run Code Online (Sandbox Code Playgroud)
消息是:
dpkg:警告:删除elasticsearch时,目录“/var/lib/elasticsearch”不为空,因此未删除
dpkg:警告:删除elasticsearch时,目录“/etc/elasticsearch”不为空,因此未删除
也删除了这些目录:
sudo rm -rf /etc/elasticsearch
sudo rm -rf /var/lib/elasticsearch
Run Code Online (Sandbox Code Playgroud)
然后再次安装:
sudo apt-get install elasticsearch=7.10.1
sudo systemctl start elasticsearch
curl http://localhost:9200/
Run Code Online (Sandbox Code Playgroud)
卸载 Kibana:
sudo apt-get remove --purge kibana
Run Code Online (Sandbox Code Playgroud)
也删除了这些目录:
sudo rm -rf /etc/kibana
sudo rm -rf /var/lib/kibana
Run Code Online (Sandbox Code Playgroud)
然后再次安装:
sudo apt-get install kibana=7.10.1
sudo systemctl start kibana
Run Code Online (Sandbox Code Playgroud)
在浏览器上打开 Kibana:
http://localhost:5601
Run Code Online (Sandbox Code Playgroud)
如果您使用包管理安装,请检查目录的所有者是否/etc/elasticsearch为elasticsearch。
sudo chown -R elasticsearch:elasticsearch /etc/elasticsearch/
Run Code Online (Sandbox Code Playgroud)
小型虚拟机也有同样的问题。上面的配置已经设置好了。唯一有帮助的是增加启动超时。标准的 systemd 超时是不够的。
作为预防措施,我将超时设置为 5 分钟,如下所示。
sudo nano /usr/lib/systemd/system/elasticsearch.service
Run Code Online (Sandbox Code Playgroud)
在 elasticsearch.service 文件的 [Service] 部分下添加。
TimeoutStartSec=300
Run Code Online (Sandbox Code Playgroud)
激活对服务的更改。
sudo /bin/systemctl enable elasticsearch.service
Run Code Online (Sandbox Code Playgroud)
再次启动服务。
service elasticsearch start
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45059 次 |
| 最近记录: |